That looks like a real performace drop ( from 192 to 145). Don’t think those queries can cause that much performance hit. May need the Urho3D masters to look into this.
This looks like overall CPU slowdown, as almost every part of the frame takes longer. Which would point to compiler settings. Which compiler are you using?
Looking in more detail, GetUIBatches() execution time has grown in your screenshots quite substantially, and it’s at least partially explained by the added text in the memory profiler. Getting a lot of text on screen is indeed slow, especially because the debug hud is using a shadow effect, and the batches are constructed each frame which is somewhat suboptimal.
Things to try:
Are you building debug or release?
Measure your frame performance without Urho’s debug hud on, e.g. by using Fraps. Is there still a substantial difference?
Yes, I’d never recommend debug build for any kinds of performance comparisons. Making the profiler display less taxing on the frame would be good though.
Something still seems off with the performance on my PC. I don’t remember my frame rate being this bad. It used to be capped at 200 some time ago, and now it’s crap. Only significant installs I’ve done recently were to upgrade my virus software to version 2016 and Windows 10 Anniversary Update.
My PC is pretty old and probably need upgrade soon but I think it can hold off for another 2-3 yrs, ha.
I found performance regressions with HugeObjectCount example. Instances of Node had grown in memory size due to addition of tags, causing worse cache performance, and PODVector Push() was slower due to new self-insertion safe behavior. I moved less critical Node variables into an implementation struct, and restored the old unsafe PODVector behavior with a note explaining it.
Not sure if this is related but i noticed that performance is significantly worse on galaxy s5 android device as well. This is strange because galaxy s2 runs exact same (release) build just fine and that is older device with weaker hardware. FrameLimiter=false helps only a bit. Could this be related?
Androids are kind of a mystery black box and we don’t have the resources to investigate properly on multiple devices. So it has to rely on users contributing fixes, if there’s something device-specific to be done. It could be related to threads if the S5 has more cores, in which case you could try disabling the task threading (-nothreads option)
I was thinking maybe to begin tackling performance problems it would be good idea to work on better performance logging. To the file for example. Currently tracking performance with what is displayed on screen is really troublesome, especially if it is some lag spikes that show up in stats on screen for split second.