Dynamic Stealth

Dynamic Stealth

327k Downloads

Abysmal performance of configurable AI-task null checks

Tommsy64 opened this issue ยท 2 comments

commented

Commit cc36f9e leaves me nonplussed.

replaceNPEAttackTargetTasks(EntityLiving) is called every single tick for every single entity. replaceNPEAttackTargetTasks(EntityLiving) duplicates the entire taskEntries LinkedHashSet into a freshly allocated array. This copy is then iterated, calling badNullTargetHandling(EntityAIBase) for each element. All of this is happens again for another EntityAITasks object.

This isn't too big of a problem; however, the worst of it is in badNullTargetHandling(EntityAIBase), which runs a customized (not sure why) regex split on a config string, allocating many String objects. Recall that this happens every single tick for just about every single entity, TWICE.

A test modded server with a single player and ~50 EntityLiving's was crawling at ~10 TPS.

commented

(See further conversation in the related PR post: #102)

commented

This should be fixed in the latest release (104)