Material: micro optimize map reading
authorMarco Costalba <mcostalba@gmail.com>
Wed, 29 Oct 2008 06:52:20 +0000 (07:52 +0100)
committerMarco Costalba <mcostalba@gmail.com>
Sat, 1 Nov 2008 11:46:52 +0000 (12:46 +0100)
Do only one map walk per read instead of two.

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
src/material.cpp

index bdfd393962927ca81ffd2f4c8098ac693a4c0632..b82bb0551a02d4c4775bf78673366cf5195b5d51 100644 (file)
@@ -70,9 +70,10 @@ namespace {
       EndgameEvaluationFunction* f = NULL;
 
       lock_grab(&EEFmapLock);
-      
-      if (EEFmap.find(key) != EEFmap.end())
-          f = EEFmap[key];
+
+      std::map<Key, EndgameEvaluationFunction*>::iterator it(EEFmap.find(key));
+      if (it != EEFmap.end())
+          f = it->second;
 
       lock_release(&EEFmapLock);
       return f;
@@ -84,8 +85,9 @@ namespace {
 
       lock_grab(&ESFmapLock);
 
-      if (ESFmap.find(key) != ESFmap.end())
-          si = ESFmap[key];
+      std::map<Key, ScalingInfo>::iterator it(ESFmap.find(key));
+      if (it != ESFmap.end())
+          si = it->second;
 
       lock_release(&ESFmapLock);
       return si;