Mojira Archive
MC-117087

Class.getSimpleName performance issue with large number of block entities

The bug

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

  1. Create a new superflat world and /tp 0 ~ 0
  2. 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.

Fixed

mezz

2017-05-06, 06:58 AM

2017-08-02, 10:20 PM

2017-08-02, 10:20 PM

3

3

Confirmed

block-entity

Minecraft 1.11.2, Minecraft 1.12, Minecraft 17w31a

Minecraft 1.12.1 Pre-Release 1