aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/common/Metric/Metric.h17
-rw-r--r--src/server/game/World/World.cpp3
2 files changed, 17 insertions, 3 deletions
diff --git a/src/common/Metric/Metric.h b/src/common/Metric/Metric.h
index 33bdf3b4ed7..11c156653d0 100644
--- a/src/common/Metric/Metric.h
+++ b/src/common/Metric/Metric.h
@@ -166,6 +166,7 @@ MetricStopWatch<LoggerType> MakeMetricStopWatch(LoggerType&& loggerFunc)
#define TC_METRIC_EVENT(category, title, description) ((void)0)
#define TC_METRIC_VALUE(category, value) ((void)0)
#define TC_METRIC_TIMER(category, ...) ((void)0)
+#define TC_METRIC_DETAILED_TIMER(category, ...) ((void)0)
#else
# if TRINITY_PLATFORM != TRINITY_PLATFORM_WINDOWS
#define TC_METRIC_EVENT(category, title, description) \
@@ -196,11 +197,21 @@ MetricStopWatch<LoggerType> MakeMetricStopWatch(LoggerType&& loggerFunc)
} while (0) \
__pragma(warning(pop))
# endif
-#define TC_METRIC_TIMER(category, ...) \
+#define TC_METRIC_TIMER(category, ...) \
MetricStopWatch TC_METRIC_UNIQUE_NAME(__tc_metric_stop_watch) = MakeMetricStopWatch([&](TimePoint start) \
- { \
- sMetric->LogValue(category, std::chrono::steady_clock::now() - start, { __VA_ARGS__ }); \
+ { \
+ sMetric->LogValue(category, std::chrono::steady_clock::now() - start, { __VA_ARGS__ }); \
});
+# if defined WITH_DETAILED_METRICS
+#define TC_METRIC_DETAILED_TIMER(category, ...) \
+ MetricStopWatch TC_METRIC_UNIQUE_NAME(__tc_metric_stop_watch) = MakeMetricStopWatch([&](TimePoint start) \
+ { \
+ sMetric->LogValue(category, std::chrono::steady_clock::now() - start, { __VA_ARGS__ }); \
+ });
+# else
+#define TC_METRIC_DETAILED_TIMER(category, ...) ((void)0)
+# endif
+
#endif
#endif // METRIC_H__
diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp
index fe1abc71094..0e050c110b0 100644
--- a/src/server/game/World/World.cpp
+++ b/src/server/game/World/World.cpp
@@ -3074,6 +3074,9 @@ void World::UpdateSessions(uint32 diff)
WorldSession* pSession = itr->second;
WorldSessionFilter updater(pSession);
+ [[maybe_unused]] uint32 currentSessionId = itr->first;
+ TC_METRIC_DETAILED_TIMER("world_update_sessions_time", TC_METRIC_TAG("account_id", std::to_string(currentSessionId)));
+
if (!pSession->Update(diff, updater)) // As interval = 0
{
if (!RemoveQueuedPlayer(itr->second) && itr->second && getIntConfig(CONFIG_INTERVAL_DISCONNECT_TOLERANCE))