Minecraft 1.11.2, Minecraft 1.12, Minecraft 17w31a
When there are large numbers of ticking block entities a lot of time is spent calling the class.getSimpleName() for the profiler, even though the profiler is not active.
Steps to reproduce
- Create a new superflat world and /tp 0 ~ 0
- Create a lot of ticking block entities: /fill 0 ~ 0 100 ~2 100 minecraft:furnace
Sampling results looks like this: getSimpleName.png
Code analysis (using MCP names)
In World.java there is a profiler section around each Block Entity's update call.
this.theProfiler.startSection(tileentity.getClass().getSimpleName()); ((ITickable)tileentity).update(); this.theProfiler.endSection();
Internally, profiler code is wrapped in if (this.profilingEnabled) statements, but this call to getSimpleName() is not, and it can have an impact.