From cd30d0bba1940520f42e6b8ca837a4b916e9b4f7 Mon Sep 17 00:00:00 2001 From: Light Date: Mon, 12 Jul 2021 15:20:47 +0430 Subject: [PATCH] Instrumentpr - Added Instrumentor * Instrumentor (class) * InstrumentorTimer (class, used statically) * ScopeProfileResult (struct) - Tidy * wWindow::wWindow --- Engine/src/Engine/Core/Application.cpp | 47 +++++++++---- Engine/src/Engine/Core/Application.h | 3 + Engine/src/Engine/Debug/Instrumentor.cpp | 70 ++++++++++++++++++++ Engine/src/Engine/Debug/Instrumentor.h | 59 +++++++++++++++++ Engine/src/Engine/Debug/Logger.h | 1 + Engine/src/Platform/OS/Windows/wWindow.cpp | 3 - Sandbox/Logs/ProfileResults_GameLoop.json | 1 + Sandbox/Logs/ProfileResults_Startup.json | 1 + Sandbox/Logs/ProfileResults_Termination.json | 1 + 9 files changed, 171 insertions(+), 15 deletions(-) create mode 100644 Engine/src/Engine/Debug/Instrumentor.cpp create mode 100644 Engine/src/Engine/Debug/Instrumentor.h create mode 100644 Sandbox/Logs/ProfileResults_GameLoop.json create mode 100644 Sandbox/Logs/ProfileResults_Startup.json create mode 100644 Sandbox/Logs/ProfileResults_Termination.json diff --git a/Engine/src/Engine/Core/Application.cpp b/Engine/src/Engine/Core/Application.cpp index b063dfe..d9cf9c6 100644 --- a/Engine/src/Engine/Core/Application.cpp +++ b/Engine/src/Engine/Core/Application.cpp @@ -11,6 +11,8 @@ #include "UserInterface/UserInterface.h" +#include "Debug/Instrumentor.h" + #include "Time/Timer.h" #include @@ -20,12 +22,16 @@ namespace Light { Application::Application() { Logger::Initialize(); + m_Instrumentor = std::unique_ptr(Instrumentor::Create()); + + m_Instrumentor->BeginSession("Logs/ProfileResults_Startup.json"); m_Window = std::unique_ptr(Light::Window::Create(std::bind(&Light::Application::OnEvent, this, std::placeholders::_1))); } Application::~Application() { LT_ENGINE_TRACE("Application::~Application()"); + m_Instrumentor->EndSession(); // ProfileResults_Termination // } void Application::GameLoop() @@ -42,29 +48,46 @@ namespace Light { // reveal window m_Window->SetVisibility(true); - DeltaTimer deltaTimer; + m_Instrumentor->EndSession(); // ProfileResults_GameLoop // + m_Instrumentor->BeginSession("Logs/ProfileResults_GameLoop.json"); //** GAMELOOP **// + DeltaTimer deltaTimer; while (!m_Window->IsClosed()) { - // update layers - m_LayerStack.OnUpdate(deltaTimer.GetDeltaTime()); + { + // update layers + LT_PROFILE_SCOPE("GameLoop::Update"); + m_LayerStack.OnUpdate(deltaTimer.GetDeltaTime()); + } - // render layers - m_Window->GetGfxContext()->GetRenderer()->BeginFrame(); - m_LayerStack.OnRender(); - m_Window->GetGfxContext()->GetRenderer()->EndFrame(); + { + // render layers + LT_PROFILE_SCOPE("GameLoop::Render"); + m_Window->GetGfxContext()->GetRenderer()->BeginFrame(); + m_LayerStack.OnRender(); + m_Window->GetGfxContext()->GetRenderer()->EndFrame(); + } - // render user interface - m_Window->GetGfxContext()->GetUserInterface()->Begin(); - m_Window->GetGfxContext()->GetUserInterface()->End(); + { + // render user interface + LT_PROFILE_SCOPE("GameLoop::UserInterface"); + m_Window->GetGfxContext()->GetUserInterface()->Begin(); + m_Window->GetGfxContext()->GetUserInterface()->End(); + } - // poll events - m_Window->PollEvents(); + { + // poll events + LT_PROFILE_SCOPE("GameLoop::Events"); + m_Window->PollEvents(); + } /// update delta time deltaTimer.Update(); } + + m_Instrumentor->EndSession(); // ProfileResults_GameLoop // + m_Instrumentor->BeginSession("Logs/ProfileResults_Termination.json"); } void Application::OnEvent(const Event& event) diff --git a/Engine/src/Engine/Core/Application.h b/Engine/src/Engine/Core/Application.h index 1df588e..478af72 100644 --- a/Engine/src/Engine/Core/Application.h +++ b/Engine/src/Engine/Core/Application.h @@ -9,9 +9,12 @@ namespace Light { class Window; class Event; + class Instrumentor; + class Application { private: + std::unique_ptr m_Instrumentor = nullptr; LayerStack m_LayerStack; protected: diff --git a/Engine/src/Engine/Debug/Instrumentor.cpp b/Engine/src/Engine/Debug/Instrumentor.cpp new file mode 100644 index 0000000..ee755e4 --- /dev/null +++ b/Engine/src/Engine/Debug/Instrumentor.cpp @@ -0,0 +1,70 @@ +#include "ltpch.h" +#include "Instrumentor.h" + +namespace Light { + + Instrumentor* Instrumentor::s_Context = nullptr; + + Instrumentor* Instrumentor::Create() + { + return new Instrumentor; + } + + Instrumentor::Instrumentor() + { + // #todo: maintenance + LT_ENGINE_ASSERT(!s_Context, "Instrumentor::Instrumentor: an instance of 'Instrumentor' already exists, do not construct this class!"); + s_Context = this; + } + + void Instrumentor::BeginSessionImpl(const std::string& outputPath) + { + m_OutputFileStream.open(outputPath); + m_OutputFileStream << "{\"traceEvents\":["; + } + + void Instrumentor::EndSessionImpl() + { + m_OutputFileStream << "]}"; + m_OutputFileStream.flush(); + m_OutputFileStream.close(); + } + + void Instrumentor::SubmitScopeProfileImpl(const ScopeProfileResult& profileResult) + { + static bool test = true; + + if (test) + { + test = false; + m_OutputFileStream << "{"; + } + else + m_OutputFileStream << ",{"; + + m_OutputFileStream << "\"name\":\"" << profileResult.name << "\","; + m_OutputFileStream << "\"cat\": \"scope\","; + m_OutputFileStream << "\"ph\": \"X\","; + m_OutputFileStream << "\"ts\":" << profileResult.start << ","; + m_OutputFileStream << "\"dur\":" << profileResult.duration << ","; + m_OutputFileStream << "\"pid\":0,"; + m_OutputFileStream << "\"tid\":" << profileResult.threadID<< ""; + m_OutputFileStream << "}"; + } + + InstrumentorTimer::InstrumentorTimer(const std::string& scopeName) + : m_Result( { scopeName, 0, 0, 0 } ), m_Start(std::chrono::steady_clock::now()) + { + } + + InstrumentorTimer::~InstrumentorTimer() + { + auto end = std::chrono::steady_clock::now(); + + m_Result.start = std::chrono::time_point_cast(m_Start).time_since_epoch().count(); + m_Result.duration = std::chrono::time_point_cast(end).time_since_epoch().count() - m_Result.start; + + Instrumentor::SubmitScopeProfile(m_Result); + } + +} \ No newline at end of file diff --git a/Engine/src/Engine/Debug/Instrumentor.h b/Engine/src/Engine/Debug/Instrumentor.h new file mode 100644 index 0000000..a9152a9 --- /dev/null +++ b/Engine/src/Engine/Debug/Instrumentor.h @@ -0,0 +1,59 @@ +#pragma once + +#include "Base.h" + +#include + +namespace Light { + + struct ScopeProfileResult + { + std::string name; + long long start, duration; + uint32_t threadID; + }; + + // #todo: add event categories + // #todo: use ofstream in a seperate thread + class Instrumentor + { + private: + static Instrumentor* s_Context; + + std::ofstream m_OutputFileStream; + bool m_FirstScopeProfile = true; + + public: + static Instrumentor* Create(); + + static inline void BeginSession(const std::string& outputPath) { s_Context->BeginSessionImpl(outputPath); } + static inline void EndSession() { s_Context->EndSessionImpl(); } + + static inline void SubmitScopeProfile(const ScopeProfileResult& profileResult) { s_Context->SubmitScopeProfileImpl(profileResult); } + + private: + Instrumentor(); + + void BeginSessionImpl(const std::string& outputPath); + void EndSessionImpl(); + + void SubmitScopeProfileImpl(const ScopeProfileResult& profileResult); + }; + + class InstrumentorTimer + { + private: + ScopeProfileResult m_Result; + std::chrono::time_point m_Start; + + public: + InstrumentorTimer(const std::string& scopeName); + ~InstrumentorTimer(); + }; + +} + +#define LT_PROFILE_SCOPE(name) InstrumentorTimer timer##__LINE__ (name) +#define LT_PROFILE_FUNCTION LT_PROFILE_SCOPE(__FUNCSIG__) +#define LT_PROFILE_BEGIN_SESSION(outputPath) ::Light::Instrumentor::BeginSession(outputPath) +#define LT_PROFILE_END_SESSION() ::Light::Instrumentor::EndSession() diff --git a/Engine/src/Engine/Debug/Logger.h b/Engine/src/Engine/Debug/Logger.h index 1d0e547..c0bbbe2 100644 --- a/Engine/src/Engine/Debug/Logger.h +++ b/Engine/src/Engine/Debug/Logger.h @@ -8,6 +8,7 @@ #define LT_LOG_FILE_LOCATION "Log.txt"; +// #todo: log function signature // File #define LT_FILE_INFO(...) ::Light::Logger::GetFileLogger()->log(spdlog::level::info , __VA_ARGS__) #define LT_FILE_WARN(...) ::Light::Logger::GetFileLogger()->log(spdlog::level::warn , __VA_ARGS__) diff --git a/Engine/src/Platform/OS/Windows/wWindow.cpp b/Engine/src/Platform/OS/Windows/wWindow.cpp index a06ea14..0a1dc7e 100644 --- a/Engine/src/Platform/OS/Windows/wWindow.cpp +++ b/Engine/src/Platform/OS/Windows/wWindow.cpp @@ -20,9 +20,6 @@ namespace Light { wWindow::wWindow(std::function callback) : m_EventCallback(callback) { - LT_ENGINE_TRACE("Pressed"); - - // init glfw LT_ENGINE_ASSERT(glfwInit(), "wWindow::wWindow: failed to initialize 'glfw'"); diff --git a/Sandbox/Logs/ProfileResults_GameLoop.json b/Sandbox/Logs/ProfileResults_GameLoop.json new file mode 100644 index 0000000..76ab68e --- /dev/null +++ b/Sandbox/Logs/ProfileResults_GameLoop.json @@ -0,0 +1 @@ +{"traceEvents":[{"name":"GameLoop::Update","cat": "scope","ph": "X","ts":190900286540,"dur":8,"pid":0,"tid":0},{"name":"GameLoop::Render","cat": "scope","ph": "X","ts":190900286809,"dur":83444,"pid":0,"tid":0},{"name":"GameLoop::UserInterface","cat": "scope","ph": "X","ts":190900370361,"dur":20915,"pid":0,"tid":0},{"name":"GameLoop::Events","cat": "scope","ph": "X","ts":190900391333,"dur":2189,"pid":0,"tid":0},{"name":"GameLoop::Update","cat": "scope","ph": "X","ts":190900393615,"dur":5,"pid":0,"tid":0},{"name":"GameLoop::Render","cat": "scope","ph": "X","ts":190900393669,"dur":8851,"pid":0,"tid":0},{"name":"GameLoop::UserInterface","cat": "scope","ph": "X","ts":190900402598,"dur":899,"pid":0,"tid":0},{"name":"GameLoop::Events","cat": "scope","ph": "X","ts":190900403565,"dur":720,"pid":0,"tid":0},{"name":"GameLoop::Update","cat": "scope","ph": "X","ts":190900404340,"dur":3,"pid":0,"tid":0},{"name":"GameLoop::Render","cat": "scope","ph": "X","ts":190900404365,"dur":14887,"pid":0,"tid":0},{"name":"GameLoop::UserInterface","cat": "scope","ph": "X","ts":190900419332,"dur":542,"pid":0,"tid":0},{"name":"GameLoop::Events","cat": "scope","ph": "X","ts":190900419977,"dur":371,"pid":0,"tid":0},{"name":"GameLoop::Update","cat": "scope","ph": "X","ts":190900420405,"dur":3,"pid":0,"tid":0},{"name":"GameLoop::Render","cat": "scope","ph": "X","ts":190900420428,"dur":14445,"pid":0,"tid":0},{"name":"GameLoop::UserInterface","cat": "scope","ph": "X","ts":190900434925,"dur":556,"pid":0,"tid":0},{"name":"GameLoop::Events","cat": "scope","ph": "X","ts":190900435602,"dur":40,"pid":0,"tid":0},{"name":"GameLoop::Update","cat": "scope","ph": "X","ts":190900435667,"dur":9,"pid":0,"tid":0},{"name":"GameLoop::Render","cat": "scope","ph": "X","ts":190900435722,"dur":16735,"pid":0,"tid":0},{"name":"GameLoop::UserInterface","cat": "scope","ph": "X","ts":190900452537,"dur":424,"pid":0,"tid":0},{"name":"GameLoop::Events","cat": "scope","ph": "X","ts":190900453054,"dur":44,"pid":0,"tid":0},{"name":"GameLoop::Update","cat": "scope","ph": "X","ts":190900453122,"dur":5,"pid":0,"tid":0},{"name":"GameLoop::Render","cat": "scope","ph": "X","ts":190900453145,"dur":15371,"pid":0,"tid":0},{"name":"GameLoop::UserInterface","cat": "scope","ph": "X","ts":190900468617,"dur":1290,"pid":0,"tid":0},{"name":"GameLoop::Events","cat": "scope","ph": "X","ts":190900469992,"dur":818,"pid":0,"tid":0},{"name":"GameLoop::Update","cat": "scope","ph": "X","ts":190900470917,"dur":4,"pid":0,"tid":0},{"name":"GameLoop::Render","cat": "scope","ph": "X","ts":190900470958,"dur":14306,"pid":0,"tid":0},{"name":"GameLoop::UserInterface","cat": "scope","ph": "X","ts":190900485343,"dur":688,"pid":0,"tid":0},{"name":"GameLoop::Events","cat": "scope","ph": "X","ts":190900486116,"dur":328,"pid":0,"tid":0},{"name":"GameLoop::Update","cat": "scope","ph": "X","ts":190900486504,"dur":4,"pid":0,"tid":0},{"name":"GameLoop::Render","cat": "scope","ph": "X","ts":190900486528,"dur":17956,"pid":0,"tid":0},{"name":"GameLoop::UserInterface","cat": "scope","ph": "X","ts":190900504544,"dur":423,"pid":0,"tid":0},{"name":"GameLoop::Events","cat": "scope","ph": "X","ts":190900505041,"dur":17,"pid":0,"tid":0},{"name":"GameLoop::Update","cat": "scope","ph": "X","ts":190900505080,"dur":20,"pid":0,"tid":0},{"name":"GameLoop::Render","cat": "scope","ph": "X","ts":190900505135,"dur":14624,"pid":0,"tid":0},{"name":"GameLoop::UserInterface","cat": "scope","ph": "X","ts":190900519877,"dur":526,"pid":0,"tid":0},{"name":"GameLoop::Events","cat": "scope","ph": "X","ts":190900520477,"dur":383,"pid":0,"tid":0},{"name":"GameLoop::Update","cat": "scope","ph": "X","ts":190900520905,"dur":6,"pid":0,"tid":0},{"name":"GameLoop::Render","cat": "scope","ph": "X","ts":190900520930,"dur":14931,"pid":0,"tid":0},{"name":"GameLoop::UserInterface","cat": "scope","ph": "X","ts":190900536011,"dur":577,"pid":0,"tid":0},{"name":"GameLoop::Events","cat": "scope","ph": "X","ts":190900536672,"dur":251,"pid":0,"tid":0},{"name":"GameLoop::Update","cat": "scope","ph": "X","ts":190900536968,"dur":4,"pid":0,"tid":0},{"name":"GameLoop::Render","cat": "scope","ph": "X","ts":190900536991,"dur":14782,"pid":0,"tid":0},{"name":"GameLoop::UserInterface","cat": "scope","ph": "X","ts":190900551939,"dur":489,"pid":0,"tid":0},{"name":"GameLoop::Events","cat": "scope","ph": "X","ts":190900552518,"dur":507,"pid":0,"tid":0},{"name":"GameLoop::Update","cat": "scope","ph": "X","ts":190900553122,"dur":5,"pid":0,"tid":0},{"name":"GameLoop::Render","cat": "scope","ph": "X","ts":190900553189,"dur":14845,"pid":0,"tid":0},{"name":"GameLoop::UserInterface","cat": "scope","ph": "X","ts":190900568086,"dur":309,"pid":0,"tid":0},{"name":"GameLoop::Events","cat": "scope","ph": "X","ts":190900568433,"dur":1342,"pid":0,"tid":0},{"name":"GameLoop::Update","cat": "scope","ph": "X","ts":190900569895,"dur":5,"pid":0,"tid":0},{"name":"GameLoop::Render","cat": "scope","ph": "X","ts":190900569958,"dur":14885,"pid":0,"tid":0},{"name":"GameLoop::UserInterface","cat": "scope","ph": "X","ts":190900584916,"dur":775,"pid":0,"tid":0},{"name":"GameLoop::Events","cat": "scope","ph": "X","ts":190900585858,"dur":56,"pid":0,"tid":0},{"name":"GameLoop::Update","cat": "scope","ph": "X","ts":190900585966,"dur":6,"pid":0,"tid":0},{"name":"GameLoop::Render","cat": "scope","ph": "X","ts":190900586012,"dur":15161,"pid":0,"tid":0},{"name":"GameLoop::UserInterface","cat": "scope","ph": "X","ts":190900601225,"dur":364,"pid":0,"tid":0},{"name":"GameLoop::Events","cat": "scope","ph": "X","ts":190900601629,"dur":1545,"pid":0,"tid":0},{"name":"GameLoop::Update","cat": "scope","ph": "X","ts":190900603231,"dur":4,"pid":0,"tid":0},{"name":"GameLoop::Render","cat": "scope","ph": "X","ts":190900603255,"dur":14524,"pid":0,"tid":0},{"name":"GameLoop::UserInterface","cat": "scope","ph": "X","ts":190900617866,"dur":375,"pid":0,"tid":0},{"name":"GameLoop::Events","cat": "scope","ph": "X","ts":190900618286,"dur":379,"pid":0,"tid":0},{"name":"GameLoop::Update","cat": "scope","ph": "X","ts":190900618723,"dur":3,"pid":0,"tid":0},{"name":"GameLoop::Render","cat": "scope","ph": "X","ts":190900618746,"dur":16101,"pid":0,"tid":0},{"name":"GameLoop::UserInterface","cat": "scope","ph": "X","ts":190900634960,"dur":408,"pid":0,"tid":0},{"name":"GameLoop::Events","cat": "scope","ph": "X","ts":190900635535,"dur":350,"pid":0,"tid":0},{"name":"GameLoop::Update","cat": "scope","ph": "X","ts":190900635939,"dur":3,"pid":0,"tid":0},{"name":"GameLoop::Render","cat": "scope","ph": "X","ts":190900635961,"dur":15771,"pid":0,"tid":0},{"name":"GameLoop::UserInterface","cat": "scope","ph": "X","ts":190900651816,"dur":492,"pid":0,"tid":0},{"name":"GameLoop::Events","cat": "scope","ph": "X","ts":190900652391,"dur":37,"pid":0,"tid":0},{"name":"GameLoop::Update","cat": "scope","ph": "X","ts":190900652467,"dur":5,"pid":0,"tid":0},{"name":"GameLoop::Render","cat": "scope","ph": "X","ts":190900652503,"dur":15547,"pid":0,"tid":0},{"name":"GameLoop::UserInterface","cat": "scope","ph": "X","ts":190900668113,"dur":833,"pid":0,"tid":0},{"name":"GameLoop::Events","cat": "scope","ph": "X","ts":190900668991,"dur":20,"pid":0,"tid":0},{"name":"GameLoop::Update","cat": "scope","ph": "X","ts":190900669033,"dur":4,"pid":0,"tid":0},{"name":"GameLoop::Render","cat": "scope","ph": "X","ts":190900669056,"dur":15458,"pid":0,"tid":0},{"name":"GameLoop::UserInterface","cat": "scope","ph": "X","ts":190900684572,"dur":324,"pid":0,"tid":0},{"name":"GameLoop::Events","cat": "scope","ph": "X","ts":190900684932,"dur":14,"pid":0,"tid":0},{"name":"GameLoop::Update","cat": "scope","ph": "X","ts":190900684967,"dur":3,"pid":0,"tid":0},{"name":"GameLoop::Render","cat": "scope","ph": "X","ts":190900684988,"dur":16342,"pid":0,"tid":0},{"name":"GameLoop::UserInterface","cat": "scope","ph": "X","ts":190900701422,"dur":438,"pid":0,"tid":0},{"name":"GameLoop::Events","cat": "scope","ph": "X","ts":190900701920,"dur":20,"pid":0,"tid":0},{"name":"GameLoop::Update","cat": "scope","ph": "X","ts":190900701996,"dur":4,"pid":0,"tid":0},{"name":"GameLoop::Render","cat": "scope","ph": "X","ts":190900702021,"dur":16084,"pid":0,"tid":0},{"name":"GameLoop::UserInterface","cat": "scope","ph": "X","ts":190900718178,"dur":366,"pid":0,"tid":0},{"name":"GameLoop::Events","cat": "scope","ph": "X","ts":190900718672,"dur":19,"pid":0,"tid":0},{"name":"GameLoop::Update","cat": "scope","ph": "X","ts":190900718734,"dur":12,"pid":0,"tid":0},{"name":"GameLoop::Render","cat": "scope","ph": "X","ts":190900718765,"dur":16172,"pid":0,"tid":0},{"name":"GameLoop::UserInterface","cat": "scope","ph": "X","ts":190900735036,"dur":587,"pid":0,"tid":0},{"name":"GameLoop::Events","cat": "scope","ph": "X","ts":190900735731,"dur":812,"pid":0,"tid":0},{"name":"GameLoop::Update","cat": "scope","ph": "X","ts":190900736632,"dur":5,"pid":0,"tid":0},{"name":"GameLoop::Render","cat": "scope","ph": "X","ts":190900736692,"dur":14673,"pid":0,"tid":0},{"name":"GameLoop::UserInterface","cat": "scope","ph": "X","ts":190900751440,"dur":402,"pid":0,"tid":0},{"name":"GameLoop::Events","cat": "scope","ph": "X","ts":190900751899,"dur":315,"pid":0,"tid":0},{"name":"GameLoop::Update","cat": "scope","ph": "X","ts":190900752265,"dur":4,"pid":0,"tid":0},{"name":"GameLoop::Render","cat": "scope","ph": "X","ts":190900752304,"dur":15716,"pid":0,"tid":0},{"name":"GameLoop::UserInterface","cat": "scope","ph": "X","ts":190900768097,"dur":444,"pid":0,"tid":0},{"name":"GameLoop::Events","cat": "scope","ph": "X","ts":190900768612,"dur":191,"pid":0,"tid":0},{"name":"GameLoop::Update","cat": "scope","ph": "X","ts":190900768858,"dur":6,"pid":0,"tid":0},{"name":"GameLoop::Render","cat": "scope","ph": "X","ts":190900768896,"dur":15433,"pid":0,"tid":0},{"name":"GameLoop::UserInterface","cat": "scope","ph": "X","ts":190900784384,"dur":306,"pid":0,"tid":0},{"name":"GameLoop::Events","cat": "scope","ph": "X","ts":190900784727,"dur":18,"pid":0,"tid":0},{"name":"GameLoop::Update","cat": "scope","ph": "X","ts":190900784768,"dur":4,"pid":0,"tid":0},{"name":"GameLoop::Render","cat": "scope","ph": "X","ts":190900784791,"dur":16563,"pid":0,"tid":0},{"name":"GameLoop::UserInterface","cat": "scope","ph": "X","ts":190900801427,"dur":428,"pid":0,"tid":0},{"name":"GameLoop::Events","cat": "scope","ph": "X","ts":190900801920,"dur":23,"pid":0,"tid":0},{"name":"GameLoop::Update","cat": "scope","ph": "X","ts":190900801981,"dur":5,"pid":0,"tid":0},{"name":"GameLoop::Render","cat": "scope","ph": "X","ts":190900802020,"dur":15829,"pid":0,"tid":0},{"name":"GameLoop::UserInterface","cat": "scope","ph": "X","ts":190900817936,"dur":419,"pid":0,"tid":0},{"name":"GameLoop::Events","cat": "scope","ph": "X","ts":190900818395,"dur":18,"pid":0,"tid":0},{"name":"GameLoop::Update","cat": "scope","ph": "X","ts":190900818435,"dur":4,"pid":0,"tid":0},{"name":"GameLoop::Render","cat": "scope","ph": "X","ts":190900818480,"dur":16579,"pid":0,"tid":0},{"name":"GameLoop::UserInterface","cat": "scope","ph": "X","ts":190900835158,"dur":534,"pid":0,"tid":0},{"name":"GameLoop::Events","cat": "scope","ph": "X","ts":190900835799,"dur":343,"pid":0,"tid":0},{"name":"GameLoop::Update","cat": "scope","ph": "X","ts":190900836231,"dur":4,"pid":0,"tid":0},{"name":"GameLoop::Render","cat": "scope","ph": "X","ts":190900836274,"dur":15338,"pid":0,"tid":0},{"name":"GameLoop::UserInterface","cat": "scope","ph": "X","ts":190900851745,"dur":655,"pid":0,"tid":0},{"name":"GameLoop::Events","cat": "scope","ph": "X","ts":190900852467,"dur":289,"pid":0,"tid":0},{"name":"GameLoop::Update","cat": "scope","ph": "X","ts":190900852816,"dur":2,"pid":0,"tid":0},{"name":"GameLoop::Render","cat": "scope","ph": "X","ts":190900852839,"dur":16194,"pid":0,"tid":0},{"name":"GameLoop::UserInterface","cat": "scope","ph": "X","ts":190900869135,"dur":398,"pid":0,"tid":0},{"name":"GameLoop::Events","cat": "scope","ph": "X","ts":190900869578,"dur":417,"pid":0,"tid":0},{"name":"GameLoop::Update","cat": "scope","ph": "X","ts":190900870048,"dur":3,"pid":0,"tid":0},{"name":"GameLoop::Render","cat": "scope","ph": "X","ts":190900870072,"dur":14837,"pid":0,"tid":0},{"name":"GameLoop::UserInterface","cat": "scope","ph": "X","ts":190900884990,"dur":489,"pid":0,"tid":0},{"name":"GameLoop::Events","cat": "scope","ph": "X","ts":190900885552,"dur":408,"pid":0,"tid":0},{"name":"GameLoop::Update","cat": "scope","ph": "X","ts":190900886038,"dur":3,"pid":0,"tid":0},{"name":"GameLoop::Render","cat": "scope","ph": "X","ts":190900886099,"dur":14941,"pid":0,"tid":0},{"name":"GameLoop::UserInterface","cat": "scope","ph": "X","ts":190900901144,"dur":394,"pid":0,"tid":0},{"name":"GameLoop::Events","cat": "scope","ph": "X","ts":190900901581,"dur":459,"pid":0,"tid":0},{"name":"GameLoop::Update","cat": "scope","ph": "X","ts":190900902091,"dur":3,"pid":0,"tid":0},{"name":"GameLoop::Render","cat": "scope","ph": "X","ts":190900902113,"dur":15744,"pid":0,"tid":0},{"name":"GameLoop::UserInterface","cat": "scope","ph": "X","ts":190900917947,"dur":525,"pid":0,"tid":0},{"name":"GameLoop::Events","cat": "scope","ph": "X","ts":190900918563,"dur":284,"pid":0,"tid":0},{"name":"GameLoop::Update","cat": "scope","ph": "X","ts":190900918886,"dur":3,"pid":0,"tid":0},{"name":"GameLoop::Render","cat": "scope","ph": "X","ts":190900918910,"dur":15450,"pid":0,"tid":0},{"name":"GameLoop::UserInterface","cat": "scope","ph": "X","ts":190900934413,"dur":348,"pid":0,"tid":0},{"name":"GameLoop::Events","cat": "scope","ph": "X","ts":190900934805,"dur":235,"pid":0,"tid":0},{"name":"GameLoop::Update","cat": "scope","ph": "X","ts":190900935124,"dur":3,"pid":0,"tid":0},{"name":"GameLoop::Render","cat": "scope","ph": "X","ts":190900935146,"dur":16232,"pid":0,"tid":0},{"name":"GameLoop::UserInterface","cat": "scope","ph": "X","ts":190900951493,"dur":975,"pid":0,"tid":0},{"name":"GameLoop::Events","cat": "scope","ph": "X","ts":190900952563,"dur":335,"pid":0,"tid":0},{"name":"GameLoop::Update","cat": "scope","ph": "X","ts":190900952980,"dur":2,"pid":0,"tid":0},{"name":"GameLoop::Render","cat": "scope","ph": "X","ts":190900953006,"dur":15152,"pid":0,"tid":0},{"name":"GameLoop::UserInterface","cat": "scope","ph": "X","ts":190900968272,"dur":483,"pid":0,"tid":0},{"name":"GameLoop::Events","cat": "scope","ph": "X","ts":190900968837,"dur":325,"pid":0,"tid":0},{"name":"GameLoop::Update","cat": "scope","ph": "X","ts":190900969211,"dur":2,"pid":0,"tid":0},{"name":"GameLoop::Render","cat": "scope","ph": "X","ts":190900969235,"dur":15359,"pid":0,"tid":0},{"name":"GameLoop::UserInterface","cat": "scope","ph": "X","ts":190900984648,"dur":402,"pid":0,"tid":0},{"name":"GameLoop::Events","cat": "scope","ph": "X","ts":190900985111,"dur":298,"pid":0,"tid":0},{"name":"GameLoop::Update","cat": "scope","ph": "X","ts":190900985462,"dur":5,"pid":0,"tid":0},{"name":"GameLoop::Render","cat": "scope","ph": "X","ts":190900985499,"dur":15923,"pid":0,"tid":0},{"name":"GameLoop::UserInterface","cat": "scope","ph": "X","ts":190901001517,"dur":684,"pid":0,"tid":0},{"name":"GameLoop::Events","cat": "scope","ph": "X","ts":190901002252,"dur":329,"pid":0,"tid":0},{"name":"GameLoop::Update","cat": "scope","ph": "X","ts":190901002634,"dur":20,"pid":0,"tid":0},{"name":"GameLoop::Render","cat": "scope","ph": "X","ts":190901002673,"dur":15518,"pid":0,"tid":0},{"name":"GameLoop::UserInterface","cat": "scope","ph": "X","ts":190901018292,"dur":1130,"pid":0,"tid":0},{"name":"GameLoop::Events","cat": "scope","ph": "X","ts":190901019549,"dur":791,"pid":0,"tid":0},{"name":"GameLoop::Update","cat": "scope","ph": "X","ts":190901020398,"dur":4,"pid":0,"tid":0},{"name":"GameLoop::Render","cat": "scope","ph": "X","ts":190901020422,"dur":14259,"pid":0,"tid":0},{"name":"GameLoop::UserInterface","cat": "scope","ph": "X","ts":190901034786,"dur":512,"pid":0,"tid":0},{"name":"GameLoop::Events","cat": "scope","ph": "X","ts":190901035359,"dur":494,"pid":0,"tid":0},{"name":"GameLoop::Update","cat": "scope","ph": "X","ts":190901035942,"dur":5,"pid":0,"tid":0},{"name":"GameLoop::Render","cat": "scope","ph": "X","ts":190901035968,"dur":15312,"pid":0,"tid":0},{"name":"GameLoop::UserInterface","cat": "scope","ph": "X","ts":190901051332,"dur":298,"pid":0,"tid":0},{"name":"GameLoop::Events","cat": "scope","ph": "X","ts":190901051666,"dur":1620,"pid":0,"tid":0},{"name":"GameLoop::Update","cat": "scope","ph": "X","ts":190901053347,"dur":4,"pid":0,"tid":0},{"name":"GameLoop::Render","cat": "scope","ph": "X","ts":190901053371,"dur":15274,"pid":0,"tid":0},{"name":"GameLoop::UserInterface","cat": "scope","ph": "X","ts":190901068759,"dur":511,"pid":0,"tid":0},{"name":"GameLoop::Events","cat": "scope","ph": "X","ts":190901069339,"dur":1732,"pid":0,"tid":0},{"name":"GameLoop::Update","cat": "scope","ph": "X","ts":190901071127,"dur":7,"pid":0,"tid":0},{"name":"GameLoop::Render","cat": "scope","ph": "X","ts":190901071153,"dur":13694,"pid":0,"tid":0},{"name":"GameLoop::UserInterface","cat": "scope","ph": "X","ts":190901084900,"dur":290,"pid":0,"tid":0},{"name":"GameLoop::Events","cat": "scope","ph": "X","ts":190901085230,"dur":1130,"pid":0,"tid":0},{"name":"GameLoop::Update","cat": "scope","ph": "X","ts":190901086415,"dur":3,"pid":0,"tid":0},{"name":"GameLoop::Render","cat": "scope","ph": "X","ts":190901086437,"dur":14885,"pid":0,"tid":0},{"name":"GameLoop::UserInterface","cat": "scope","ph": "X","ts":190901101373,"dur":357,"pid":0,"tid":0},{"name":"GameLoop::Events","cat": "scope","ph": "X","ts":190901101768,"dur":1199,"pid":0,"tid":0},{"name":"GameLoop::Update","cat": "scope","ph": "X","ts":190901103039,"dur":3,"pid":0,"tid":0},{"name":"GameLoop::Render","cat": "scope","ph": "X","ts":190901103061,"dur":15954,"pid":0,"tid":0},{"name":"GameLoop::UserInterface","cat": "scope","ph": "X","ts":190901119084,"dur":606,"pid":0,"tid":0},{"name":"GameLoop::Events","cat": "scope","ph": "X","ts":190901119778,"dur":753,"pid":0,"tid":0},{"name":"GameLoop::Update","cat": "scope","ph": "X","ts":190901120600,"dur":4,"pid":0,"tid":0},{"name":"GameLoop::Render","cat": "scope","ph": "X","ts":190901120646,"dur":14297,"pid":0,"tid":0},{"name":"GameLoop::UserInterface","cat": "scope","ph": "X","ts":190901134994,"dur":247,"pid":0,"tid":0},{"name":"GameLoop::Events","cat": "scope","ph": "X","ts":190901135293,"dur":43,"pid":0,"tid":0},{"name":"GameLoop::Update","cat": "scope","ph": "X","ts":190901135360,"dur":3,"pid":0,"tid":0},{"name":"GameLoop::Render","cat": "scope","ph": "X","ts":190901135381,"dur":17190,"pid":0,"tid":0},{"name":"GameLoop::UserInterface","cat": "scope","ph": "X","ts":190901152638,"dur":468,"pid":0,"tid":0},{"name":"GameLoop::Events","cat": "scope","ph": "X","ts":190901153167,"dur":255,"pid":0,"tid":0},{"name":"GameLoop::Update","cat": "scope","ph": "X","ts":190901153455,"dur":4,"pid":0,"tid":0},{"name":"GameLoop::Render","cat": "scope","ph": "X","ts":190901153478,"dur":14803,"pid":0,"tid":0},{"name":"GameLoop::UserInterface","cat": "scope","ph": "X","ts":190901168335,"dur":343,"pid":0,"tid":0},{"name":"GameLoop::Events","cat": "scope","ph": "X","ts":190901168735,"dur":21,"pid":0,"tid":0},{"name":"GameLoop::Update","cat": "scope","ph": "X","ts":190901168779,"dur":4,"pid":0,"tid":0},{"name":"GameLoop::Render","cat": "scope","ph": "X","ts":190901168803,"dur":16055,"pid":0,"tid":0},{"name":"GameLoop::UserInterface","cat": "scope","ph": "X","ts":190901184927,"dur":333,"pid":0,"tid":0},{"name":"GameLoop::Events","cat": "scope","ph": "X","ts":190901185305,"dur":24,"pid":0,"tid":0},{"name":"GameLoop::Update","cat": "scope","ph": "X","ts":190901185351,"dur":3,"pid":0,"tid":0},{"name":"GameLoop::Render","cat": "scope","ph": "X","ts":190901185372,"dur":16142,"pid":0,"tid":0},{"name":"GameLoop::UserInterface","cat": "scope","ph": "X","ts":190901201567,"dur":525,"pid":0,"tid":0},{"name":"GameLoop::Events","cat": "scope","ph": "X","ts":190901202128,"dur":16,"pid":0,"tid":0},{"name":"GameLoop::Update","cat": "scope","ph": "X","ts":190901202166,"dur":6,"pid":0,"tid":0},{"name":"GameLoop::Render","cat": "scope","ph": "X","ts":190901202195,"dur":16152,"pid":0,"tid":0},{"name":"GameLoop::UserInterface","cat": "scope","ph": "X","ts":190901218401,"dur":334,"pid":0,"tid":0},{"name":"GameLoop::Events","cat": "scope","ph": "X","ts":190901218774,"dur":126,"pid":0,"tid":0},{"name":"GameLoop::Update","cat": "scope","ph": "X","ts":190901218932,"dur":3,"pid":0,"tid":0},{"name":"GameLoop::Render","cat": "scope","ph": "X","ts":190901218963,"dur":15633,"pid":0,"tid":0},{"name":"GameLoop::UserInterface","cat": "scope","ph": "X","ts":190901234682,"dur":387,"pid":0,"tid":0},{"name":"GameLoop::Events","cat": "scope","ph": "X","ts":190901235171,"dur":147,"pid":0,"tid":0},{"name":"GameLoop::Update","cat": "scope","ph": "X","ts":190901235536,"dur":4,"pid":0,"tid":0},{"name":"GameLoop::Render","cat": "scope","ph": "X","ts":190901235560,"dur":15843,"pid":0,"tid":0},{"name":"GameLoop::UserInterface","cat": "scope","ph": "X","ts":190901251530,"dur":443,"pid":0,"tid":0},{"name":"GameLoop::Events","cat": "scope","ph": "X","ts":190901252057,"dur":52,"pid":0,"tid":0},{"name":"GameLoop::Update","cat": "scope","ph": "X","ts":190901252160,"dur":5,"pid":0,"tid":0},{"name":"GameLoop::Render","cat": "scope","ph": "X","ts":190901252202,"dur":16408,"pid":0,"tid":0},{"name":"GameLoop::UserInterface","cat": "scope","ph": "X","ts":190901268714,"dur":891,"pid":0,"tid":0},{"name":"GameLoop::Events","cat": "scope","ph": "X","ts":190901269678,"dur":123,"pid":0,"tid":0},{"name":"GameLoop::Update","cat": "scope","ph": "X","ts":190901269829,"dur":2,"pid":0,"tid":0},{"name":"GameLoop::Render","cat": "scope","ph": "X","ts":190901269850,"dur":14944,"pid":0,"tid":0},{"name":"GameLoop::UserInterface","cat": "scope","ph": "X","ts":190901284857,"dur":380,"pid":0,"tid":0},{"name":"GameLoop::Events","cat": "scope","ph": "X","ts":190901285282,"dur":25,"pid":0,"tid":0},{"name":"GameLoop::Update","cat": "scope","ph": "X","ts":190901285383,"dur":4,"pid":0,"tid":0},{"name":"GameLoop::Render","cat": "scope","ph": "X","ts":190901285408,"dur":15663,"pid":0,"tid":0},{"name":"GameLoop::UserInterface","cat": "scope","ph": "X","ts":190901301126,"dur":296,"pid":0,"tid":0},{"name":"GameLoop::Events","cat": "scope","ph": "X","ts":190901301464,"dur":119,"pid":0,"tid":0},{"name":"GameLoop::Update","cat": "scope","ph": "X","ts":190901301614,"dur":2,"pid":0,"tid":0},{"name":"GameLoop::Render","cat": "scope","ph": "X","ts":190901301635,"dur":16082,"pid":0,"tid":0},{"name":"GameLoop::UserInterface","cat": "scope","ph": "X","ts":190901317801,"dur":337,"pid":0,"tid":0},{"name":"GameLoop::Events","cat": "scope","ph": "X","ts":190901318180,"dur":19,"pid":0,"tid":0},{"name":"GameLoop::Update","cat": "scope","ph": "X","ts":190901318275,"dur":4,"pid":0,"tid":0},{"name":"GameLoop::Render","cat": "scope","ph": "X","ts":190901318319,"dur":16113,"pid":0,"tid":0},{"name":"GameLoop::UserInterface","cat": "scope","ph": "X","ts":190901334521,"dur":500,"pid":0,"tid":0},{"name":"GameLoop::Events","cat": "scope","ph": "X","ts":190901335105,"dur":22,"pid":0,"tid":0},{"name":"GameLoop::Update","cat": "scope","ph": "X","ts":190901335150,"dur":4,"pid":0,"tid":0},{"name":"GameLoop::Render","cat": "scope","ph": "X","ts":190901335179,"dur":15982,"pid":0,"tid":0},{"name":"GameLoop::UserInterface","cat": "scope","ph": "X","ts":190901351212,"dur":255,"pid":0,"tid":0},{"name":"GameLoop::Events","cat": "scope","ph": "X","ts":190901351504,"dur":20,"pid":0,"tid":0},{"name":"GameLoop::Update","cat": "scope","ph": "X","ts":190901351546,"dur":4,"pid":0,"tid":0},{"name":"GameLoop::Render","cat": "scope","ph": "X","ts":190901351568,"dur":16479,"pid":0,"tid":0},{"name":"GameLoop::UserInterface","cat": "scope","ph": "X","ts":190901368187,"dur":593,"pid":0,"tid":0},{"name":"GameLoop::Events","cat": "scope","ph": "X","ts":190901368846,"dur":35,"pid":0,"tid":0},{"name":"GameLoop::Update","cat": "scope","ph": "X","ts":190901368929,"dur":4,"pid":0,"tid":0},{"name":"GameLoop::Render","cat": "scope","ph": "X","ts":190901368951,"dur":15900,"pid":0,"tid":0},{"name":"GameLoop::UserInterface","cat": "scope","ph": "X","ts":190901384924,"dur":460,"pid":0,"tid":0},{"name":"GameLoop::Events","cat": "scope","ph": "X","ts":190901385436,"dur":20,"pid":0,"tid":0},{"name":"GameLoop::Update","cat": "scope","ph": "X","ts":190901385479,"dur":4,"pid":0,"tid":0},{"name":"GameLoop::Render","cat": "scope","ph": "X","ts":190901385503,"dur":15756,"pid":0,"tid":0},{"name":"GameLoop::UserInterface","cat": "scope","ph": "X","ts":190901401348,"dur":405,"pid":0,"tid":0},{"name":"GameLoop::Events","cat": "scope","ph": "X","ts":190901401797,"dur":877,"pid":0,"tid":0},{"name":"GameLoop::Update","cat": "scope","ph": "X","ts":190901402747,"dur":3,"pid":0,"tid":0},{"name":"GameLoop::Render","cat": "scope","ph": "X","ts":190901402845,"dur":15488,"pid":0,"tid":0},{"name":"GameLoop::UserInterface","cat": "scope","ph": "X","ts":190901418484,"dur":586,"pid":0,"tid":0},{"name":"GameLoop::Events","cat": "scope","ph": "X","ts":190901419148,"dur":395,"pid":0,"tid":0},{"name":"GameLoop::Update","cat": "scope","ph": "X","ts":190901419591,"dur":4,"pid":0,"tid":0},{"name":"GameLoop::Render","cat": "scope","ph": "X","ts":190901419614,"dur":14899,"pid":0,"tid":0},{"name":"GameLoop::UserInterface","cat": "scope","ph": "X","ts":190901434593,"dur":472,"pid":0,"tid":0},{"name":"GameLoop::Events","cat": "scope","ph": "X","ts":190901435122,"dur":360,"pid":0,"tid":0},{"name":"GameLoop::Update","cat": "scope","ph": "X","ts":190901435535,"dur":6,"pid":0,"tid":0},{"name":"GameLoop::Render","cat": "scope","ph": "X","ts":190901435587,"dur":15821,"pid":0,"tid":0},{"name":"GameLoop::UserInterface","cat": "scope","ph": "X","ts":190901451543,"dur":597,"pid":0,"tid":0},{"name":"GameLoop::Events","cat": "scope","ph": "X","ts":190901452215,"dur":582,"pid":0,"tid":0},{"name":"GameLoop::Update","cat": "scope","ph": "X","ts":190901452867,"dur":8,"pid":0,"tid":0},{"name":"GameLoop::Render","cat": "scope","ph": "X","ts":190901452929,"dur":15124,"pid":0,"tid":0},{"name":"GameLoop::UserInterface","cat": "scope","ph": "X","ts":190901468131,"dur":445,"pid":0,"tid":0},{"name":"GameLoop::Events","cat": "scope","ph": "X","ts":190901468635,"dur":324,"pid":0,"tid":0},{"name":"GameLoop::Update","cat": "scope","ph": "X","ts":190901469001,"dur":4,"pid":0,"tid":0},{"name":"GameLoop::Render","cat": "scope","ph": "X","ts":190901469025,"dur":15926,"pid":0,"tid":0},{"name":"GameLoop::UserInterface","cat": "scope","ph": "X","ts":190901485033,"dur":680,"pid":0,"tid":0},{"name":"GameLoop::Events","cat": "scope","ph": "X","ts":190901485849,"dur":28,"pid":0,"tid":0},{"name":"GameLoop::Update","cat": "scope","ph": "X","ts":190901485916,"dur":7,"pid":0,"tid":0},{"name":"GameLoop::Render","cat": "scope","ph": "X","ts":190901485957,"dur":15735,"pid":0,"tid":0},{"name":"GameLoop::UserInterface","cat": "scope","ph": "X","ts":190901501745,"dur":429,"pid":0,"tid":0},{"name":"GameLoop::Events","cat": "scope","ph": "X","ts":190901502236,"dur":20,"pid":0,"tid":0},{"name":"GameLoop::Update","cat": "scope","ph": "X","ts":190901502295,"dur":3,"pid":0,"tid":0},{"name":"GameLoop::Render","cat": "scope","ph": "X","ts":190901502317,"dur":16727,"pid":0,"tid":0},{"name":"GameLoop::UserInterface","cat": "scope","ph": "X","ts":190901519100,"dur":867,"pid":0,"tid":0},{"name":"GameLoop::Events","cat": "scope","ph": "X","ts":190901520054,"dur":1333,"pid":0,"tid":0},{"name":"GameLoop::Update","cat": "scope","ph": "X","ts":190901521435,"dur":2,"pid":0,"tid":0},{"name":"GameLoop::Render","cat": "scope","ph": "X","ts":190901521457,"dur":13025,"pid":0,"tid":0},{"name":"GameLoop::UserInterface","cat": "scope","ph": "X","ts":190901534539,"dur":705,"pid":0,"tid":0},{"name":"GameLoop::Events","cat": "scope","ph": "X","ts":190901535335,"dur":328,"pid":0,"tid":0},{"name":"GameLoop::Update","cat": "scope","ph": "X","ts":190901535747,"dur":23,"pid":0,"tid":0},{"name":"GameLoop::Render","cat": "scope","ph": "X","ts":190901535823,"dur":15551,"pid":0,"tid":0},{"name":"GameLoop::UserInterface","cat": "scope","ph": "X","ts":190901551462,"dur":406,"pid":0,"tid":0},{"name":"GameLoop::Events","cat": "scope","ph": "X","ts":190901551955,"dur":42,"pid":0,"tid":0},{"name":"GameLoop::Update","cat": "scope","ph": "X","ts":190901552025,"dur":3,"pid":0,"tid":0},{"name":"GameLoop::Render","cat": "scope","ph": "X","ts":190901552049,"dur":16156,"pid":0,"tid":0},{"name":"GameLoop::UserInterface","cat": "scope","ph": "X","ts":190901568257,"dur":374,"pid":0,"tid":0},{"name":"GameLoop::Events","cat": "scope","ph": "X","ts":190901568683,"dur":21,"pid":0,"tid":0},{"name":"GameLoop::Update","cat": "scope","ph": "X","ts":190901568738,"dur":4,"pid":0,"tid":0},{"name":"GameLoop::Render","cat": "scope","ph": "X","ts":190901568773,"dur":15846,"pid":0,"tid":0},{"name":"GameLoop::UserInterface","cat": "scope","ph": "X","ts":190901584696,"dur":558,"pid":0,"tid":0},{"name":"GameLoop::Events","cat": "scope","ph": "X","ts":190901585389,"dur":181,"pid":0,"tid":0},{"name":"GameLoop::Update","cat": "scope","ph": "X","ts":190901585625,"dur":4,"pid":0,"tid":0},{"name":"GameLoop::Render","cat": "scope","ph": "X","ts":190901585665,"dur":15740,"pid":0,"tid":0},{"name":"GameLoop::UserInterface","cat": "scope","ph": "X","ts":190901601460,"dur":412,"pid":0,"tid":0},{"name":"GameLoop::Events","cat": "scope","ph": "X","ts":190901601918,"dur":20,"pid":0,"tid":0},{"name":"GameLoop::Update","cat": "scope","ph": "X","ts":190901601961,"dur":3,"pid":0,"tid":0},{"name":"GameLoop::Render","cat": "scope","ph": "X","ts":190901601984,"dur":16538,"pid":0,"tid":0},{"name":"GameLoop::UserInterface","cat": "scope","ph": "X","ts":190901618656,"dur":504,"pid":0,"tid":0},{"name":"GameLoop::Events","cat": "scope","ph": "X","ts":190901619251,"dur":52,"pid":0,"tid":0},{"name":"GameLoop::Update","cat": "scope","ph": "X","ts":190901619371,"dur":7,"pid":0,"tid":0},{"name":"GameLoop::Render","cat": "scope","ph": "X","ts":190901619431,"dur":14994,"pid":0,"tid":0},{"name":"GameLoop::UserInterface","cat": "scope","ph": "X","ts":190901634474,"dur":455,"pid":0,"tid":0},{"name":"GameLoop::Events","cat": "scope","ph": "X","ts":190901634990,"dur":43,"pid":0,"tid":0},{"name":"GameLoop::Update","cat": "scope","ph": "X","ts":190901635075,"dur":22,"pid":0,"tid":0},{"name":"GameLoop::Render","cat": "scope","ph": "X","ts":190901635130,"dur":16349,"pid":0,"tid":0},{"name":"GameLoop::UserInterface","cat": "scope","ph": "X","ts":190901651556,"dur":517,"pid":0,"tid":0},{"name":"GameLoop::Events","cat": "scope","ph": "X","ts":190901652183,"dur":18,"pid":0,"tid":0},{"name":"GameLoop::Update","cat": "scope","ph": "X","ts":190901652222,"dur":4,"pid":0,"tid":0},{"name":"GameLoop::Render","cat": "scope","ph": "X","ts":190901652244,"dur":15361,"pid":0,"tid":0},{"name":"GameLoop::UserInterface","cat": "scope","ph": "X","ts":190901667678,"dur":371,"pid":0,"tid":0},{"name":"GameLoop::Events","cat": "scope","ph": "X","ts":190901668103,"dur":19,"pid":0,"tid":0},{"name":"GameLoop::Update","cat": "scope","ph": "X","ts":190901668145,"dur":3,"pid":0,"tid":0},{"name":"GameLoop::Render","cat": "scope","ph": "X","ts":190901668171,"dur":16348,"pid":0,"tid":0},{"name":"GameLoop::UserInterface","cat": "scope","ph": "X","ts":190901684599,"dur":660,"pid":0,"tid":0},{"name":"GameLoop::Events","cat": "scope","ph": "X","ts":190901685351,"dur":255,"pid":0,"tid":0},{"name":"GameLoop::Update","cat": "scope","ph": "X","ts":190901685769,"dur":5,"pid":0,"tid":0},{"name":"GameLoop::Render","cat": "scope","ph": "X","ts":190901685823,"dur":15012,"pid":0,"tid":0},{"name":"GameLoop::UserInterface","cat": "scope","ph": "X","ts":190901700894,"dur":454,"pid":0,"tid":0},{"name":"GameLoop::Events","cat": "scope","ph": "X","ts":190901701433,"dur":20,"pid":0,"tid":0},{"name":"GameLoop::Update","cat": "scope","ph": "X","ts":190901701477,"dur":4,"pid":0,"tid":0},{"name":"GameLoop::Render","cat": "scope","ph": "X","ts":190901701501,"dur":15968,"pid":0,"tid":0},{"name":"GameLoop::UserInterface","cat": "scope","ph": "X","ts":190901717541,"dur":368,"pid":0,"tid":0},{"name":"GameLoop::Events","cat": "scope","ph": "X","ts":190901717955,"dur":40,"pid":0,"tid":0},{"name":"GameLoop::Update","cat": "scope","ph": "X","ts":190901718049,"dur":5,"pid":0,"tid":0},{"name":"GameLoop::Render","cat": "scope","ph": "X","ts":190901718083,"dur":16025,"pid":0,"tid":0},{"name":"GameLoop::UserInterface","cat": "scope","ph": "X","ts":190901734160,"dur":330,"pid":0,"tid":0},{"name":"GameLoop::Events","cat": "scope","ph": "X","ts":190901734538,"dur":17,"pid":0,"tid":0},{"name":"GameLoop::Update","cat": "scope","ph": "X","ts":190901734579,"dur":3,"pid":0,"tid":0},{"name":"GameLoop::Render","cat": "scope","ph": "X","ts":190901734601,"dur":16388,"pid":0,"tid":0},{"name":"GameLoop::UserInterface","cat": "scope","ph": "X","ts":190901751056,"dur":418,"pid":0,"tid":0},{"name":"GameLoop::Events","cat": "scope","ph": "X","ts":190901751516,"dur":19,"pid":0,"tid":0},{"name":"GameLoop::Update","cat": "scope","ph": "X","ts":190901751595,"dur":4,"pid":0,"tid":0},{"name":"GameLoop::Render","cat": "scope","ph": "X","ts":190901751619,"dur":15987,"pid":0,"tid":0},{"name":"GameLoop::UserInterface","cat": "scope","ph": "X","ts":190901767677,"dur":421,"pid":0,"tid":0},{"name":"GameLoop::Events","cat": "scope","ph": "X","ts":190901768159,"dur":16,"pid":0,"tid":0},{"name":"GameLoop::Update","cat": "scope","ph": "X","ts":190901768214,"dur":3,"pid":0,"tid":0},{"name":"GameLoop::Render","cat": "scope","ph": "X","ts":190901768237,"dur":15854,"pid":0,"tid":0},{"name":"GameLoop::UserInterface","cat": "scope","ph": "X","ts":190901784147,"dur":429,"pid":0,"tid":0},{"name":"GameLoop::Events","cat": "scope","ph": "X","ts":190901784651,"dur":33541,"pid":0,"tid":0}]} \ No newline at end of file diff --git a/Sandbox/Logs/ProfileResults_Startup.json b/Sandbox/Logs/ProfileResults_Startup.json new file mode 100644 index 0000000..69ea374 --- /dev/null +++ b/Sandbox/Logs/ProfileResults_Startup.json @@ -0,0 +1 @@ +{"traceEvents":[]} \ No newline at end of file diff --git a/Sandbox/Logs/ProfileResults_Termination.json b/Sandbox/Logs/ProfileResults_Termination.json new file mode 100644 index 0000000..69ea374 --- /dev/null +++ b/Sandbox/Logs/ProfileResults_Termination.json @@ -0,0 +1 @@ +{"traceEvents":[]} \ No newline at end of file