diff --git a/indra/llcommon/llinstancetracker.cpp b/indra/llcommon/llinstancetracker.cpp index f576204511..36e8078694 100644 --- a/indra/llcommon/llinstancetracker.cpp +++ b/indra/llcommon/llinstancetracker.cpp @@ -35,14 +35,26 @@ //static void * & LLInstanceTrackerBase::getInstances(std::type_info const & info) { - static std::map instances; +// This is called a HUGE amount of times. Just use the name() ptr in a map instead of making expensive string compares each time +// static std::map instances; +// +// std::string k = info.name(); +// if(instances.find(k) == instances.end()) +// { +// instances[k] = NULL; +// } +// +// return instances[k]; - std::string k = info.name(); - if(instances.find(k) == instances.end()) + static std::map instances; + std::map< char const *, void* >::iterator itr = instances.find( info.name() ); + // std::string k = info.name(); + if(itr == instances.end()) { - instances[k] = NULL; + itr = instances.insert( std::make_pair( info.name(), (void*)0 ) ).first; } + return itr->second; +// - return instances[k]; }