mirror of
				https://github.com/luanti-org/luanti.git
				synced 2025-11-04 09:15:29 +01:00 
			
		
		
		
	Precalculate mapblock relative size. This permit to remove many s16 calculs on runtime
This commit is contained in:
		@@ -69,6 +69,7 @@ static const char *modified_reason_strings[] = {
 | 
			
		||||
MapBlock::MapBlock(Map *parent, v3s16 pos, IGameDef *gamedef, bool dummy):
 | 
			
		||||
		m_parent(parent),
 | 
			
		||||
		m_pos(pos),
 | 
			
		||||
		m_pos_relative(pos * MAP_BLOCKSIZE),
 | 
			
		||||
		m_gamedef(gamedef),
 | 
			
		||||
		m_modified(MOD_STATE_WRITE_NEEDED),
 | 
			
		||||
		m_modified_reason(MOD_REASON_INITIAL),
 | 
			
		||||
 
 | 
			
		||||
@@ -258,7 +258,7 @@ public:
 | 
			
		||||
 | 
			
		||||
	inline v3s16 getPosRelative()
 | 
			
		||||
	{
 | 
			
		||||
		return m_pos * MAP_BLOCKSIZE;
 | 
			
		||||
		return m_pos_relative;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	inline core::aabbox3d<s16> 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;
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user