Dubs Performance Analyzer

MOD Desc
This is a dry boring technical tool to analyze the cpu usage of specific parts of the game to help players and modders figure out performance issues. Also includes some optimizations!

Don’t go witch hunting modders, join the discord to discuss and analyze instead

Wiki[github.com]

My Discord channel to talk about it: Discord[discord.gg]

Github[github.com]

[paypal.me]

[ko-fi.com]

[www.patreon.com]



Tried to get a resource ‘UI/Icons/Medical/Leaking’ from a different thread. All resources must be loaded in the main thread.Verse.Log:Error(String, Boolean)Verse.ContentFinder`1:Get(String, Boolean)BlueLeakTest.d__1:MoveNext()System.Collections.Generic.List`1:.ctor(IEnumerable`1)System.Linq.Enumerable:ToList(IEnumerable`1)HarmonyLib.CodeTranspiler:GetResult(ILGenerator, MethodBase)HarmonyLib.MethodBodyReader:FinalizeILCodes(Emitter, List`1, List`1, Boolean&)HarmonyLib.MethodCopier:Finalize(Emitter, List`1, Boolean&)HarmonyLib.MethodPatcher:CreateReplacement(Dictionary`2&)HarmonyLib.PatchFunctions:UpdateWrapper(MethodBase, PatchInfo)HarmonyLib.PatchProcessor:Patch()HarmonyLib.Harmony:Patch(MethodBase, HarmonyMethod, HarmonyMethod, HarmonyMethod, HarmonyMethod)DubsAnalyzer.H_HarmonyTranspilers:ProfilePatch()…

I have some lag spikes like 100-300ms I would say a couple every second. They came suddenly without any changes from my side. I tracked them down to the PawnTick > JobTrackerTick. How can I troubleshoot further?The only thing I could see in the logs was this:Reached max messages limit. Stopping logging to avoid spam.Verse.Log:Warning(String, Boolean)Verse.Log:PostMessage()Verse.Log:Warning(String, Boolean)DubsAnalyzer.Profiler:Stop(Boolean)DubsAnalyzer.Analyzer:Stop(String)DubsAnalyzer.H_PawnTickProfile:Stop(String)Verse.AI.Pawn_JobTracker:DMD?-1299810176::JobTrackerTick_Patch2>(Pawn_JobTracker)Verse.Pawn:DMD?965230976::Tick_Patch2>(Pawn)Verse.TickList:DMD?1157054848::Tick_Patch1>(TickList)Verse.TickManager:DMD?-739320192::DoSingleTick_Patch1>(TickManager)Verse.TickManager:TickManagerUpdate()Verse.Game:UpdatePlay()Verse.Root_Play:Update()Thanks for any help in advance 🙂

This tool is the best. Truly awesome work. I have a question about profiling custom methods. I have a case where two methods have the same name, but different parameters. Is there a way I could still profile one of them (or just both)?Also, as a sort of feature request – could you add profiling all methods of a specific class or assembly? I’d love to use that to find the biggest offenders in my own code. Right now I have to stumble across them by systematically trying one method after the other (you’d think you know what to look for, but I’ve had a few surprises already…). Being able to throw in a whole class or assembly would easy that pain significantly.


Leave a Reply

Your email address will not be published. Required fields are marked *