From ca63f7f10d912382ebc24a54995f7153598ed429 Mon Sep 17 00:00:00 2001 From: nerzhul Date: Wed, 29 Jul 2015 10:49:40 +0200 Subject: Precalculate mapblock relative size. This permit to remove many s16 calculs on runtime --- src/mapblock.h | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'src/mapblock.h') diff --git a/src/mapblock.h b/src/mapblock.h index 92ca4b485..ba33c01a2 100644 --- a/src/mapblock.h +++ b/src/mapblock.h @@ -258,7 +258,7 @@ public: inline v3s16 getPosRelative() { - return m_pos * MAP_BLOCKSIZE; + return m_pos_relative; } inline core::aabbox3d getBox() @@ -564,6 +564,14 @@ private: // Position in blocks on parent v3s16 m_pos; + /* This is the precalculated m_pos_relative value + * This caches the value, improving performance by removing 3 s16 multiplications + * at runtime on each getPosRelative call + * For a 5 minutes runtime with valgrind this removes 3 * 19M s16 multiplications + * The gain can be estimated in Release Build to 3 * 100M multiply operations for 5 mins + */ + v3s16 m_pos_relative; + IGameDef *m_gamedef; /* -- cgit v1.2.3