Added timer functions with less overhead to ostd::Timer

This commit is contained in:
OmniaX-dev 2024-03-30 23:30:39 +01:00
parent e813d9d1a6
commit 7ca2fbf3f1
4 changed files with 54 additions and 3 deletions

View file

@ -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,

View file

@ -1 +1 @@
1853
1854

View file

@ -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::nanoseconds> (std::chrono::system_clock::now().time_since_epoch()).count();
return m_current;
case eTimeUnits::Microseconds:
m_current = std::chrono::duration_cast<std::chrono::microseconds> (std::chrono::system_clock::now().time_since_epoch()).count();
return m_current;
case eTimeUnits::Milliseconds:
m_current = std::chrono::duration_cast<std::chrono::milliseconds> (std::chrono::system_clock::now().time_since_epoch()).count();
return m_current;
case eTimeUnits::Seconds:
m_current = std::chrono::duration_cast<std::chrono::seconds> (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::nanoseconds> (std::chrono::system_clock::now().time_since_epoch()).count();
break;
case eTimeUnits::Microseconds:
diff = std::chrono::duration_cast<std::chrono::microseconds> (std::chrono::system_clock::now().time_since_epoch()).count();
break;
case eTimeUnits::Milliseconds:
diff = std::chrono::duration_cast<std::chrono::milliseconds> (std::chrono::system_clock::now().time_since_epoch()).count();
break;
case eTimeUnits::Seconds:
diff = std::chrono::duration_cast<std::chrono::seconds> (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)

View file

@ -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);