From e1903b5c1126472a775766b0cf4eda78cf35dbce Mon Sep 17 00:00:00 2001
From: Rye Mutt <rye@alchemyviewer.org>
Date: Mon, 20 Jul 2020 17:27:02 -0400
Subject: [PATCH] More map hotspots

---
 indra/llcharacter/llanimationstates.cpp |  5 +++--
 indra/llcharacter/llanimationstates.h   |  3 ++-
 indra/llcharacter/llcharacter.cpp       |  6 +++---
 indra/llcharacter/llcharacter.h         | 17 +++++++++--------
 4 files changed, 17 insertions(+), 14 deletions(-)

diff --git a/indra/llcharacter/llanimationstates.cpp b/indra/llcharacter/llanimationstates.cpp
index c16cae1bbc7..ba771c92d96 100644
--- a/indra/llcharacter/llanimationstates.cpp
+++ b/indra/llcharacter/llanimationstates.cpp
@@ -355,9 +355,10 @@ const char *LLAnimationLibrary::animStateToString( const LLUUID& state )
 	{
 		return NULL;
 	}
-	if (mAnimMap.count(state))
+	auto it = mAnimMap.find(state);
+	if (it != mAnimMap.end())
 	{
-		return mAnimMap[state];
+		return it->second;
 	}
 
 	return NULL;
diff --git a/indra/llcharacter/llanimationstates.h b/indra/llcharacter/llanimationstates.h
index 79cbcabdc1d..1b13a0bf544 100644
--- a/indra/llcharacter/llanimationstates.h
+++ b/indra/llcharacter/llanimationstates.h
@@ -28,6 +28,7 @@
 #define LL_LLANIMATIONSTATES_H
 
 #include <map>
+#include <boost/unordered_map.hpp>
 
 #include "llstringtable.h"
 #include "lluuid.h"
@@ -203,7 +204,7 @@ class LLAnimationLibrary
 private:
 	LLStringTable mAnimStringTable;
 
-	typedef std::map<LLUUID, char *> anim_map_t;
+	typedef boost::unordered_map<LLUUID, char *> anim_map_t;
 	anim_map_t mAnimMap;
 
 public:
diff --git a/indra/llcharacter/llcharacter.cpp b/indra/llcharacter/llcharacter.cpp
index b764ef0c7e1..3d2586dac88 100644
--- a/indra/llcharacter/llcharacter.cpp
+++ b/indra/llcharacter/llcharacter.cpp
@@ -263,7 +263,7 @@ void LLCharacter::dumpCharacter( LLJoint* joint )
 //-----------------------------------------------------------------------------
 // setAnimationData()
 //-----------------------------------------------------------------------------
-void LLCharacter::setAnimationData(std::string name, void *data)
+void LLCharacter::setAnimationData(const std::string& name, void *data)
 {
 	mAnimationData[name] = data;
 }
@@ -271,7 +271,7 @@ void LLCharacter::setAnimationData(std::string name, void *data)
 //-----------------------------------------------------------------------------
 // getAnimationData()
 //-----------------------------------------------------------------------------
-void* LLCharacter::getAnimationData(std::string name)
+void* LLCharacter::getAnimationData(const std::string& name)
 {
 	return get_if_there(mAnimationData, name, (void*)NULL);
 }
@@ -279,7 +279,7 @@ void* LLCharacter::getAnimationData(std::string name)
 //-----------------------------------------------------------------------------
 // removeAnimationData()
 //-----------------------------------------------------------------------------
-void LLCharacter::removeAnimationData(std::string name)
+void LLCharacter::removeAnimationData(const std::string& name)
 {
 	mAnimationData.erase(name);
 }
diff --git a/indra/llcharacter/llcharacter.h b/indra/llcharacter/llcharacter.h
index 2fac5f53a65..f30db74676d 100644
--- a/indra/llcharacter/llcharacter.h
+++ b/indra/llcharacter/llcharacter.h
@@ -39,6 +39,8 @@
 #include "llpointer.h"
 #include "llrefcount.h"
 
+#include <boost/unordered_map.hpp>
+
 class LLPolyMesh;
 
 class LLPauseRequestHandle : public LLThreadSafeRefCount
@@ -181,11 +183,11 @@ class LLCharacter
 
 	virtual S32 getCollisionVolumeID(std::string &name) { return -1; }
 
-	void setAnimationData(std::string name, void *data);
+	void setAnimationData(const std::string& name, void *data);
 	
-	void *getAnimationData(std::string name);
+	void *getAnimationData(const std::string& name);
 
-	void removeAnimationData(std::string name);
+	void removeAnimationData(const std::string& name);
 	
 	void addVisualParam(LLVisualParam *param);
 	void addSharedVisualParam(LLVisualParam *param);
@@ -237,11 +239,10 @@ class LLCharacter
 	}
 	S32 getVisualParamID(LLVisualParam *id)
 	{
-		visual_param_index_map_t::iterator iter;
-		for (iter = mVisualParamIndexMap.begin(); iter != mVisualParamIndexMap.end(); iter++)
+		for (const auto& param_pair : mVisualParamIndexMap)
 		{
-			if (iter->second == id)
-				return iter->first;
+			if (param_pair.second == id)
+				return param_pair.first;
 		}
 		return 0;
 	}
@@ -267,7 +268,7 @@ class LLCharacter
 protected:
 	LLMotionController	mMotionController;
 
-	typedef std::map<std::string, void *> animation_data_map_t;
+	typedef boost::unordered_map<std::string, void *> animation_data_map_t;
 	animation_data_map_t mAnimationData;
 
 	F32					mPreferredPelvisHeight;
-- 
GitLab