From 37675afe6e7b49fcc71490d24d5590aa4f060271 Mon Sep 17 00:00:00 2001 From: Arrehn Date: Sun, 9 Oct 2011 19:44:53 -0400 Subject: [PATCH] instancetracker improvements, by Nicky Dasmijn --- indra/llcommon/llinstancetracker.cpp | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) 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]; }