Kingfisher: Performance Optimizer
By tracing and measuring the vanilla source code and identifying performance bottlenecks, Kingfisher replaces them with more efficient implementations. This makes TPS/FPS gains without side effects possible.
Optimization Results
In a typical test environment, Kingfisher's patches themselves can achieve speedups of 2x ~ 25x. This will not translate as directly to overall TPS, because save states vary and optimization results are hard to generalize.
If you are willing to provide a save from a near vanilla late game colony, that will help Kingfisher iterate on its optimization results.
Technical Details
Kingfisher pursues zero runtime overhead, including:
- Uses PrePatcher to inject fields and replace methods, avoiding extra wrapping and call overhead.
- Uses Publicizer to expose private fields, avoiding reflection overhead.
- A conditionally compiled profiler, excluded from release builds.
Patch List
## Combat & Target Finding
AttackTargetFinder.BestAttackTarget (FreePatch)
Hediff_Shambler.TickInterval
Hediff_Shambler.PreRemoved
Hediff_Shambler.Notify_DelayedAlert
## Thoughts & Social
PawnDiedOrDownedThoughtsUtility.RemoveLostThoughts (FreePatch)
PawnDiedOrDownedThoughtsUtility.RemoveResuedRelativeThought (FreePatch)
PawnDiedOrDownedThoughtsUtility.TryGiveThoughts (Prefix)
## Jobs & Work Scanning
WorkGiver_Scanner.PotentialWorkThingsGlobal (FreePatch)
CompRefuelable.PostSpawnSetup
CompRefuelable.PostDestroy
CompRefuelable.ConsumeFuel
CompRefuelable.Refuel
ThingComp.PostDeSpawn
## Buildings & Thing Lists
ListerThings.Remove (FreePatch)
ListerBuildings.AllBuildingsColonistOfDef (FreePatch)
ListerBuildings.ColonistsHaveBuilding (FreePatch)
ListerBuildings.ColonistsHaveBuildingWithPowerOn (FreePatch)
ListerBuildings.Remove
ListerBuildings.Add
## Health & Immunity
ImmunityHandler.NeededImmunitiesNow (FreePatch)
Kingfisher is still in development, and this list will be kept in sync with updates.
FAQ
Q: Can Kingfisher be added to or removed from a save?
A: Yes. There should be no issue in theory.
Q: How compatible is Kingfisher with other mods?
A: Kingfisher aims to coexist with other mods. This requires testing and feedback, and your help is appreciated.
Q: What is Kingfisher's relationship with Performance Fish?
A: Performance Fish inspired Kingfisher and served as a reference for patch direction and implementation.
Source Code
Kingfisher is open source[github.com] under a mix of MPL 2.0 and MIT licenses.
Credits
- Publicizer by krafs.
- Harmony by Brrainz.
- Prepatcher by Zetrith.
- Performance Fish & Fishery by Bradson.