// Management · RimWorld Mod

[Dev Tool] Float Menu Performance Monitor

[Dev Tool] Float Menu Performance Monitor mod preview for RimWorld

Float Menu Performance Monitor A diagnostic tool for locating RimWorld 1.

Float Menu Performance Monitor

A diagnostic tool for locating RimWorld 1.6 map float-menu performance hotspots. It measures the calls and execution time of FloatMenuOptionProviders and WorkGiver checks triggered during float-menu generation. It also records probable mod ownership and the targets being checked. The monitor supports Dubs Performance Analyzer (hereafter referred to as DPA) while retaining Player.log output. DPA is optional and is not a required dependency.

Features

  • Tracks float-menu GUI calls, total time, and average time.
  • Measures the actual execution time of FloatMenuOptionProvider.GetOptionsFor, including yield-based iterators.
  • Measures WorkGiver JobOnThing / JobOnCell checks.
  • Records calls, time, probable owning mod, and checked targets.
  • Writes low-frequency samples to Player.log.
  • Adds Overview, Providers, and WorkGivers profiling entries when DPA is installed.

How to Use

1. Enable the mod and fully restart RimWorld. 2. Load the test save, unpause, and let the game run for a while. Some performance problems appear only after several game ticks have passed. 3. Select a pawn, right-click a target that may cause slowdown, and keep the menu open for several seconds. 4. View the results through DPA, or search Player.log for:
Player.log is usually located at: %USERPROFILE%\AppData\LocalLow\Ludeon Studios\RimWorld by Ludeon Studios\Player.log

Reading the Log

: One sampling window. providerTop lists the slowest option providers, while workGiverTop lists the slowest work checks. : Cumulative float-menu GUI calls, total time, and average time. : Errors produced by the monitor itself. No Provider or WorkGiver data while the menu is closed is normally expected.

Float Menu Performance Optimizer

This tool is compatible with Float Menu Performance Optimizer: https://steamcommunity.com/sharedfiles/filedetails/?id=3784467506 If you want to reduce sustained FPS loss while a float menu remains open, you can try that mod. To profile the original unoptimized performance hotspots, temporarily disable its general optimization mode and the relevant integrated fixes. Restore the settings after profiling; you do not need to change your mod list.

Load Order

This mod must load after Harmony. When using DPA, place DPA before this monitor. Other mods have no strict load-order requirement. You may place the monitor after the mods being profiled, usually near the end of the list, but it does not need to be absolutely last.

Notes

This is a diagnostic tool. Timing and logging add a small amount of overhead, so disable it before performing final FPS comparisons. Mod ownership is inferred from assembly and type information. Complex Harmony patches and custom GUI code cannot always be attributed with complete accuracy.

Suggested Prompt for Analyzing Player.log with AI

This is a RimWorld 1.6 Player.log. Float Menu Performance Monitor uses tags for map float-menu performance data. Search for and analyze: Goal: Identify mods, FloatMenuOptionProviders, or WorkGivers that may cause sustained FPS loss while a float menu is generated or remains open. Please: 1. Rank the main hotspots by cumulative ms and list their names, calls, ms, mod, and targets. 2. Determine whether expensive checks are repeatedly running on unrelated targets. 3. Assess whether the likely cause is missing target prefiltering, map-wide searches, repeated JobOnThing / JobOnCell calls, or periodic full menu regeneration. 4. Suggest the smallest and lowest-risk optimization. 5. Separate facts directly supported by the log from conclusions that require source-code inspection. 6. If Float Menu Performance Optimizer was enabled, explain that its refresh interval and integrated fixes may have affected the results. Do not modify any files. Do not mistake the monitor's small profiling overhead for the target mod's primary performance problem.

Update Log

August 24, 2026

• Added DPA integration with Overview, Providers, and WorkGivers profiling entries. • Retained Player.log monitoring for setups without DPA. • Fixed missing execution-time measurements for yield-based providers. • Results are now grouped under the original GetOptionsFor method. • Improved instructions for use with Float Menu Performance Optimizer.