From b554fc70ead7c16be605731fa71d7e4dcdbcfd17 Mon Sep 17 00:00:00 2001 From: ksuprynowicz Date: Mon, 20 Feb 2023 21:50:53 +0100 Subject: [PATCH] Added script timers performance debugging --- libraries/script-engine/src/ScriptManager.cpp | 10 ++++++++++ libraries/script-engine/src/ScriptManager.h | 4 ++++ libraries/script-engine/src/v8/ScriptEngineV8.cpp | 1 + 3 files changed, 15 insertions(+) diff --git a/libraries/script-engine/src/ScriptManager.cpp b/libraries/script-engine/src/ScriptManager.cpp index 5ae3632e04..23fdc96692 100644 --- a/libraries/script-engine/src/ScriptManager.cpp +++ b/libraries/script-engine/src/ScriptManager.cpp @@ -1049,6 +1049,14 @@ void ScriptManager::timerFired() { return; // bail early } + _timerCallCounter++; + if (_timerCallCounter % 100 == 0) { + qDebug() << "Script engine: " << _engine->manager()->getFilename() + << "timer call count: " << _timerCallCounter << " total time: " << _totalTimeInTimerEvents_s; + } + QElapsedTimer callTimer; + callTimer.start(); + QTimer* callingTimer = reinterpret_cast(sender()); CallbackData timerData = _timerFunctionMap.value(callingTimer); @@ -1069,6 +1077,8 @@ void ScriptManager::timerFired() { } else { qCWarning(scriptengine) << "timerFired -- invalid function" << timerData.function.toVariant().toString(); } + + _totalTimeInTimerEvents_s += callTimer.elapsed() / 1000.0; } QTimer* ScriptManager::setupTimerWithInterval(const ScriptValue& function, int intervalMS, bool isSingleShot) { diff --git a/libraries/script-engine/src/ScriptManager.h b/libraries/script-engine/src/ScriptManager.h index 3a21882e04..08b3842877 100644 --- a/libraries/script-engine/src/ScriptManager.h +++ b/libraries/script-engine/src/ScriptManager.h @@ -1005,6 +1005,10 @@ protected: QWeakPointer _scriptEngines; + // For debugging performance issues + int _timerCallCounter{ 0 }; + double _totalTimeInTimerEvents_s{ 0.0 }; + friend ScriptManagerPointer newScriptManager(Context context, const QString& scriptContents, const QString& fileNameString); }; diff --git a/libraries/script-engine/src/v8/ScriptEngineV8.cpp b/libraries/script-engine/src/v8/ScriptEngineV8.cpp index f9755ec8af..534cd754e6 100644 --- a/libraries/script-engine/src/v8/ScriptEngineV8.cpp +++ b/libraries/script-engine/src/v8/ScriptEngineV8.cpp @@ -415,6 +415,7 @@ ScriptEngineV8::ScriptEngineV8(ScriptManager* scriptManager) : v8::V8::Initialize(); qCDebug(scriptengine) << "V8 platform initialized"; } ); _v8InitMutex.unlock(); + qDebug() << "Creating new script engine"; { v8::Isolate::CreateParams isolateParams; isolateParams.array_buffer_allocator = v8::ArrayBuffer::Allocator::NewDefaultAllocator();