Skip to content

TLAB Pressure Relief

Latest
Compare
Choose a tag to compare
@MadMartian MadMartian released this 20 Jan 04:38

This release focuses on improving engine performance by relieving memory allocation pressure on Thread-Local Allocation Buffers (See issue #6 for context). The engine made excessive use of temporaries that incur significant performance costs that the JIT cannot optimize. This release has eliminated the use of most temporaries. This pressure manifested most often while attempting to retrieve A* nodes from the cache, but also during initial voxel world bitmap cache generation.

The image below illustrates the relative pressure that Hydrazine Path Engine was putting on TLABs in the context of a game that uses it.
image

Hydrazine Path Engine types have not been visible as hotspot contenders in new allocation profiling results since this release.

As a general reminder, Hydrazine Path Engine is not thread-safe, any unsynchronized execution of the engine will result in undefined behaviour.

Breaking Changes:

  • com.extollit.linalg.immutable.Vec3i is no more, com.extollit.gaming.ai.path.model.Coords is used in lieu where applicable
  • Contract of com.extollit.gaming.ai.path.model.INodeCalculator has changed