فهرست منبع

Reduced heap alloc/dealloc per frame when performing some string key-value lookups.

louis-mclaughlin 11 سال پیش
والد
کامیت
5e02035f3e
2فایلهای تغییر یافته به همراه8 افزوده شده و 3 حذف شده
  1. 2 1
      gameplay/src/PhysicsController.cpp
  2. 6 2
      gameplay/src/ScriptTarget.cpp

+ 2 - 1
gameplay/src/PhysicsController.cpp

@@ -484,7 +484,8 @@ void PhysicsController::update(float elapsedTime)
     _world->stepSimulation(elapsedTime * 0.001f, 10);
 
     // If we have status listeners, then check if our status has changed.
-    if (_listeners || _callbacks["statusEvent"])
+    static const std::string statusEventId = "statusEvent";
+    if (_listeners || _callbacks[statusEventId])
     {
         Listener::EventType oldStatus = _status;
 

+ 6 - 2
gameplay/src/ScriptTarget.cpp

@@ -25,7 +25,9 @@ template<> void ScriptTarget::fireScriptEvent<void>(const char* eventName, ...)
     va_list list;
     va_start(list, eventName);
 
-    std::map<std::string, std::vector<Callback>* >::iterator iter = _callbacks.find(eventName);
+    static std::string searchString;
+    searchString = eventName;
+    std::map<std::string, std::vector<Callback>* >::iterator iter = _callbacks.find(searchString);
     if (iter != _callbacks.end() && iter->second != NULL)
     {
         ScriptController* sc = Game::getInstance()->getScriptController();
@@ -54,7 +56,9 @@ template<> bool ScriptTarget::fireScriptEvent<bool>(const char* eventName, ...)
     va_list list;
     va_start(list, eventName);
 
-    std::map<std::string, std::vector<Callback>* >::iterator iter = _callbacks.find(eventName);
+    static std::string searchString;
+    searchString = eventName;
+    std::map<std::string, std::vector<Callback>* >::iterator iter = _callbacks.find(searchString);
     if (iter != _callbacks.end() && iter->second)
     {
         ScriptController* sc = Game::getInstance()->getScriptController();