Hi,dark_sylinc wrote: ↑Wed Jul 22, 2020 5:19 pmIs this Release or Debug performance?
Build Ogre with CMake setting OGRE_PROFILING_PROVIDER set to either 'remotery' or 'offline'
The 'offline' one will generate exhaustive CSV files (if Ogre is compiled with OGRE_PROFILING_EXHAUSTIVE it gets even more exhaustive).
Code: Select all
#if OGRE_PROFILING Ogre::Profiler::getSingleton().setEnabled( true ); #if OGRE_PROFILING == OGRE_PROFILING_INTERNAL Ogre::Profiler::getSingleton().endProfile( "" ); #endif #if OGRE_PROFILING == OGRE_PROFILING_INTERNAL_OFFLINE Ogre::Profiler::getSingleton().getOfflineProfiler().setDumpPathsOnShutdown( mWriteAccessFolder + "ProfilePerFrame", mWriteAccessFolder + "ProfileAccum" ); #endif #endif
Remotery is realtime, and you can watch it by opening index.html from ogre-next-deps/src/Remotery/vis in your browser
I've been doing some profiling using chrome:tracing as per Chrome Tracing as Profiler Frontend using hrydgard/minitrace. In my case, both Ogre 1.10 and Ogre 2.2 are taking 80%+ of the wall clock time. I.e. there is little to gain from optimising my app logic, other than how it uses Ogre to setup rendering. Since D3D9 can only run on a single thread, I guess I have to use D3D11 (i.e. Ogre 2.2).
A zoomed-in image is attached below. The green sections are my app, the rest is Ogre 2.2
So I tried to add profiling to Ogre. I've tried both offline and remotery. Offline profiling works, but it is difficult to visualise what is going on. I built some rudimentary Excel formulas to display stack growth, etc, but still not very satisfactory.
Remotery looks promising, but how are you meant to interpret the results? It seems to present the same results as the CSV, except real-time and prettier looking.
EDIT: deleted linker error issues (now resolved) and added Remotery pic
This one is Sample_PbsMaterials - looks similar other than the number of scene?