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 [i]PrePatcher[/i] to inject fields and replace methods, avoiding extra wrapping and call overhead.
- Uses [i]Publicizer[/i] 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)
## 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
[b]Q: Can Kingfisher be added to or removed from a save?[/b]
A: Yes. There should be no issue in theory.
[b]Q: How compatible is Kingfisher with other mods?[/b]
A: Kingfisher aims to coexist with other mods. This requires testing and feedback, and your help is appreciated.
[b]Q: What is Kingfisher's relationship with [i]Performance Fish[/i]?[/b]
A: [i]Performance Fish[/i] inspired Kingfisher and served as a reference for patch direction and implementation.
Source Code
Kingfisher is [url=https%3A%2F%2Fgithub.com%2Frealloon%2FKingfisher]open source[/url][github.com] under a mix of MPL 2.0 and MIT licenses.
Credits
- [i]Publicizer[/i] by krafs.
- [i]Harmony[/i] by Brrainz.
- [i]Prepatcher[/i] by Zetrith.
- [i]Performance Fish[/i] & [i]Fishery[/i] by Bradson.