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.
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