summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire@kdab.com>2016-09-27 11:07:11 +0200
committerPaul Lemire <paul.lemire@kdab.com>2016-12-15 07:13:54 +0000
commit0b73b58b4c0acdf750bb640abb1379e855284e45 (patch)
tree86c04c8c2e6d5c89e559ff74ecde14348a4e118f
parent7ba9cb93a64e5f6b5eee96e5b42207df0082d6ce (diff)
QAspectManager: add stat trace for arbiter sync time
Change-Id: Ie2abab5d1116b57a0296ac52cc8a311e31ce2ef7 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
-rw-r--r--src/core/aspects/qaspectmanager.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/core/aspects/qaspectmanager.cpp b/src/core/aspects/qaspectmanager.cpp
index 7a8c09d00..c621038a0 100644
--- a/src/core/aspects/qaspectmanager.cpp
+++ b/src/core/aspects/qaspectmanager.cpp
@@ -48,6 +48,8 @@
#include <Qt3DCore/private/qservicelocator_p.h>
+#include <Qt3DCore/private/qaspectjob_p.h>
+#include <Qt3DCore/private/qthreadpooler_p.h>
#include <Qt3DCore/private/qtickclockservice_p.h>
#include <Qt3DCore/private/corelogging_p.h>
#include <Qt3DCore/private/qscheduler_p.h>
@@ -270,7 +272,19 @@ void QAspectManager::exec()
//
// Doing this as the first call in the new frame ensures the lock free approach works
// without any such data race.
+#ifdef QT3D_JOBS_RUN_STATS
+ const quint32 arbiterId = 4096;
+ JobRunStats changeArbiterStats;
+ changeArbiterStats.jobId.typeAndInstance[0] = arbiterId;
+ changeArbiterStats.jobId.typeAndInstance[1] = 0;
+ changeArbiterStats.threadId = reinterpret_cast<quint64>(QThread::currentThreadId());
+ changeArbiterStats.startTime = QThreadPooler::m_jobsStatTimer.nsecsElapsed();
+#endif
m_changeArbiter->syncChanges();
+#ifdef QT3D_JOBS_RUN_STATS
+ changeArbiterStats.endTime = QThreadPooler::m_jobsStatTimer.nsecsElapsed();
+ QThreadPooler::addJobLogStatsEntry(changeArbiterStats);
+#endif
// For each Aspect
// Ask them to launch set of jobs for the current frame