|
From: <cn...@us...> - 2009-08-18 22:39:04
|
Revision: 496
http://hgengine.svn.sourceforge.net/hgengine/?rev=496&view=rev
Author: cnlohr
Date: 2009-08-18 22:38:55 +0000 (Tue, 18 Aug 2009)
Log Message:
-----------
switch to MHash - It's roughly 4% faster total scene graph traversal with MHash instead of map when the CPU
is forced to be the bottleneck.
Modified Paths:
--------------
Mercury2/src/MercuryAsset.cpp
Mercury2/src/MercuryAsset.h
Mercury2/src/Shader.cpp
Mercury2/src/Shader.h
Modified: Mercury2/src/MercuryAsset.cpp
===================================================================
--- Mercury2/src/MercuryAsset.cpp 2009-08-18 22:27:31 UTC (rev 495)
+++ Mercury2/src/MercuryAsset.cpp 2009-08-18 22:38:55 UTC (rev 496)
@@ -120,13 +120,6 @@
return NULL;
}
-MercuryAsset* AssetFactory::LocateAsset( const MString& key )
-{
- std::map<MString, MercuryAsset*>::iterator asset = m_assetInstances.find(key);
- if ( asset != m_assetInstances.end() ) return asset->second;
- return NULL;
-}
-
void AssetFactory::AddAssetInstance(const MString& key, MercuryAsset* asset)
{
asset->IsInstanced(true);
@@ -135,16 +128,10 @@
void AssetFactory::RemoveAssetInstance(const MString& key)
{
- std::map<MString, MercuryAsset*>::iterator asset = m_assetInstances.find(key);
- if ( asset != m_assetInstances.end() )
- {
- m_assetInstances.erase( asset );
- printf("removed asset %s\n", key.c_str());
- }
-
+ m_assetInstances.remove( key );
}
-std::map<MString, MercuryAsset*> AssetFactory::m_assetInstances;
+MHash< MercuryAsset*> AssetFactory::m_assetInstances;
/***************************************************************************
* Copyright (C) 2008 by Joshua Allen *
Modified: Mercury2/src/MercuryAsset.h
===================================================================
--- Mercury2/src/MercuryAsset.h 2009-08-18 22:27:31 UTC (rev 495)
+++ Mercury2/src/MercuryAsset.h 2009-08-18 22:38:55 UTC (rev 496)
@@ -9,7 +9,7 @@
#include <XMLParser.h>
#include <Callback.h>
-#include <map>
+#include <MercuryHash.h>
#include <list>
enum LoadState
@@ -113,12 +113,12 @@
void RemoveAssetInstance(const MString& key);
private:
- MercuryAsset* LocateAsset( const MString& key );
+ MercuryAsset* LocateAsset( const MString& key ) { MercuryAsset ** a = m_assetInstances.get( key ); return a?(*a):0; }
std::list< std::pair< MString, Callback0R< MAutoPtr<MercuryAsset> > > > m_factoryCallbacks;
//the actual storage point is in MercuryAssetInstance
- static std::map<MString, MercuryAsset*> m_assetInstances;
+ static MHash< MercuryAsset*> m_assetInstances;
};
Modified: Mercury2/src/Shader.cpp
===================================================================
--- Mercury2/src/Shader.cpp 2009-08-18 22:27:31 UTC (rev 495)
+++ Mercury2/src/Shader.cpp 2009-08-18 22:38:55 UTC (rev 496)
@@ -425,11 +425,9 @@
std::list< UniformMap >::iterator ui = m_uniforms.begin();
for (;ui != m_uniforms.end(); ++ui)
{
- std::map< MString, ShaderAttribute >::iterator sai = m_globalAttributes.find( ui->name );
- if (sai != m_globalAttributes.end())
- {
- SetAttributeInternal(sai->first, sai->second);
- }
+ ShaderAttribute* a = m_globalAttributes.get( ui->name );
+ if( a )
+ SetAttributeInternal(ui->name,*a);
}
}
@@ -459,8 +457,7 @@
void Shader::RemoveAttribute(const MString& name)
{
- std::map< MString, ShaderAttribute>::iterator i = m_globalAttributes.find( name );
- if ( i != m_globalAttributes.end() ) m_globalAttributes.erase( i );
+ m_globalAttributes.remove( name );
//no sense in unsetting it in the current shader, what would we set it to?
}
@@ -491,7 +488,7 @@
}
}
-std::map< MString, ShaderAttribute> Shader::m_globalAttributes;
+MHash< ShaderAttribute> Shader::m_globalAttributes;
/*
* Copyright (c) 2009 Charles Lohr
Modified: Mercury2/src/Shader.h
===================================================================
--- Mercury2/src/Shader.h 2009-08-18 22:27:31 UTC (rev 495)
+++ Mercury2/src/Shader.h 2009-08-18 22:38:55 UTC (rev 496)
@@ -2,7 +2,7 @@
#define SHADER_H
#include <MercuryAsset.h>
-#include <map>
+#include <MercuryHash.h>
#include <vector>
#include <MercuryMatrix.h>
@@ -49,7 +49,7 @@
no longer referenced, it will remain in the map, as to
prevent bad pointers. This list is all-enduring.
*/
- std::map< MString, ShaderAttribute * > m_AllShaderAttributes;
+ MHash< ShaderAttribute * > m_AllShaderAttributes;
};
class UniformMap
@@ -176,7 +176,7 @@
Shader * OriginalShader;
//global uniform that should be applied to all shaders
- static std::map< MString, ShaderAttribute > m_globalAttributes;
+ static MHash< ShaderAttribute > m_globalAttributes;
};
#endif
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|