diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/game/World.cpp | 18 | ||||
| -rw-r--r-- | src/game/World.h | 2 | 
2 files changed, 20 insertions, 0 deletions
diff --git a/src/game/World.cpp b/src/game/World.cpp index daa305c8f92..761a2383c00 100644 --- a/src/game/World.cpp +++ b/src/game/World.cpp @@ -1418,6 +1418,17 @@ void World::DetectDBCLang()      sLog.outString("Using %s DBC Locale as default. All available DBC locales: %s",localeNames[m_defaultDbcLocale],availableLocalsStr.empty() ? "<none>" : availableLocalsStr.c_str());  } +void World::RecordTimeDiff(const char *text) +{ +    if(m_updateTimeCount != 1) +        return; +    sLog.outDebugInLine("Difftime "); +    sLog.outDebugInLine(text); +    time_t thisTime = time(NULL);     +    sLog.outDebug(": %u.", uint32(thisTime - m_currentTime)); +    m_currentTime = thisTime; +} +  /// Update the World !  void World::Update(time_t diff)  { @@ -1429,6 +1440,7 @@ void World::Update(time_t diff)              sLog.outString("Update time diff: %u. Players online: %u.", m_updateTimeSum / m_updateTimeCount, GetActiveSessionCount());              m_updateTimeSum = m_updateTime;              m_updateTimeCount = 1; +            m_currentTime = time(NULL);          }          else          { @@ -1515,6 +1527,7 @@ void World::Update(time_t diff)              }          }      } +    RecordTimeDiff("UpdateAuction");      /// <li> Handle session updates when the timer has passed      if (m_timers[WUPDATE_SESSIONS].Passed()) @@ -1523,6 +1536,7 @@ void World::Update(time_t diff)          UpdateSessions(diff);      } +    RecordTimeDiff("UpdateSessions");      /// <li> Handle weather updates when the timer has passed      if (m_timers[WUPDATE_WEATHERS].Passed()) @@ -1554,6 +1568,7 @@ void World::Update(time_t diff)          m_timers[WUPDATE_UPTIME].Reset();          WorldDatabase.PExecute("UPDATE uptime SET uptime = %d, maxplayers = %d WHERE starttime = " I64FMTD, tmpDiff, maxClientsNum, uint64(m_startTime));      } +    RecordTimeDiff("UpdateWeatherAndUptime");      /// <li> Handle all other objects      if (m_timers[WUPDATE_OBJECTS].Passed()) @@ -1570,9 +1585,11 @@ void World::Update(time_t diff)          sOutdoorPvPMgr.Update(diff);      } +    RecordTimeDiff("UpdateMaps");      // execute callbacks from sql queries that were queued recently      UpdateResultQueue(); +    RecordTimeDiff("UpdateResultQueue");      ///- Erase corpses once every 20 minutes      if (m_timers[WUPDATE_CORPSES].Passed()) @@ -1600,6 +1617,7 @@ void World::Update(time_t diff)      // And last, but not least handle the issued cli commands      ProcessCliCommands(); +    RecordTimeDiff("UpdateRemainingThings");  }  void World::ForceGameEventUpdate() diff --git a/src/game/World.h b/src/game/World.h index aca311335df..6a224715cb4 100644 --- a/src/game/World.h +++ b/src/game/World.h @@ -538,6 +538,8 @@ class World          uint32 mail_timer_expires;          uint32 m_updateTime, m_updateTimeSum;          uint32 m_updateTimeCount; +        time_t m_currentTime; +        void RecordTimeDiff(const char * text);          typedef UNORDERED_MAP<uint32, Weather*> WeatherMap;          WeatherMap m_weathers;  | 
