From 7ca2fbf3f1a9664693ea39761e10bee0a1be5f15 Mon Sep 17 00:00:00 2001 From: OmniaX-dev Date: Sat, 30 Mar 2024 23:30:39 +0100 Subject: [PATCH] Added timer functions with less overhead to ostd::Timer --- .vscode/settings.json | 4 ++-- build.nr | 2 +- src/ostd/Utils.cpp | 49 +++++++++++++++++++++++++++++++++++++++++++ src/ostd/Utils.hpp | 2 ++ 4 files changed, 54 insertions(+), 3 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 6acb32c..aef6058 100755 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -105,7 +105,7 @@ "tab.inactiveBackground": "#000", "tab.activeBackground": "#1b1b1b", "tab.activeBorder": "#bb5400", - "editorIndentGuide.background": "#252525", + "editorIndentGuide.background1": "#252525", "editorWhitespace.foreground": "#683700", "editor.lineHighlightBorder": "#1a1a1a", "editor.lineHighlightBackground": "#490050", @@ -146,7 +146,7 @@ "workbench.editor.openPositioning": "last", "workbench.editor.tabActionCloseVisibility": false, "window.density.editorTabHeight": "compact", - "window.zoomLevel": 1, + "window.zoomLevel": 0, "explorer.autoReveal": false, "editor.stickyScroll.enabled": false, "workbench.statusBar.visible": false, diff --git a/build.nr b/build.nr index ea6d98f..861c126 100644 --- a/build.nr +++ b/build.nr @@ -1 +1 @@ -1853 +1854 diff --git a/src/ostd/Utils.cpp b/src/ostd/Utils.cpp index f17587c..b5769ed 100755 --- a/src/ostd/Utils.cpp +++ b/src/ostd/Utils.cpp @@ -474,6 +474,30 @@ namespace ostd return 0; } + uint64_t Timer::startCount(eTimeUnits timeUnit) + { + m_timeUnit = timeUnit; + m_started = true; + switch (m_timeUnit) + { + case eTimeUnits::Nanoseconds: + m_current = std::chrono::duration_cast (std::chrono::system_clock::now().time_since_epoch()).count(); + return m_current; + case eTimeUnits::Microseconds: + m_current = std::chrono::duration_cast (std::chrono::system_clock::now().time_since_epoch()).count(); + return m_current; + case eTimeUnits::Milliseconds: + m_current = std::chrono::duration_cast (std::chrono::system_clock::now().time_since_epoch()).count(); + return m_current; + case eTimeUnits::Seconds: + m_current = std::chrono::duration_cast (std::chrono::system_clock::now().time_since_epoch()).count(); + return m_current; + default: m_started = false; return 0; + } + m_started = false; + return 0; + } + uint64_t Timer::end(bool print) { if (!m_started) return 0; @@ -528,6 +552,31 @@ namespace ostd return diff; } + uint64_t Timer::endCount(void) + { + if (!m_started) return 0; + m_started = false; + int64_t diff; + switch (m_timeUnit) + { + case eTimeUnits::Nanoseconds: + diff = std::chrono::duration_cast (std::chrono::system_clock::now().time_since_epoch()).count(); + break; + case eTimeUnits::Microseconds: + diff = std::chrono::duration_cast (std::chrono::system_clock::now().time_since_epoch()).count(); + break; + case eTimeUnits::Milliseconds: + diff = std::chrono::duration_cast (std::chrono::system_clock::now().time_since_epoch()).count(); + break; + case eTimeUnits::Seconds: + diff = std::chrono::duration_cast (std::chrono::system_clock::now().time_since_epoch()).count(); + break; + default: return 0; + } + diff -= m_current; + return diff; + } + uint64_t Timer::getEpoch(eTimeUnits timeUnit) { switch (timeUnit) diff --git a/src/ostd/Utils.hpp b/src/ostd/Utils.hpp index c80b674..9d95225 100755 --- a/src/ostd/Utils.hpp +++ b/src/ostd/Utils.hpp @@ -39,7 +39,9 @@ namespace ostd public: inline Timer(void) { m_started = false; m_current = 0; m_timeUnit = eTimeUnits::Nanoseconds; m_dest = nullptr; } uint64_t start(bool print = true, String name = "", eTimeUnits timeUnit = eTimeUnits::Nanoseconds, OutputHandlerBase* __destination = nullptr); + uint64_t startCount(eTimeUnits timeUnit = eTimeUnits::Nanoseconds); uint64_t end(bool print = true); + uint64_t endCount(void); static uint64_t getEpoch(eTimeUnits timeUnit = eTimeUnits::Milliseconds);