Added timer functions with less overhead to ostd::Timer
This commit is contained in:
parent
e813d9d1a6
commit
7ca2fbf3f1
4 changed files with 54 additions and 3 deletions
4
.vscode/settings.json
vendored
4
.vscode/settings.json
vendored
|
|
@ -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,
|
||||
|
|
|
|||
2
build.nr
2
build.nr
|
|
@ -1 +1 @@
|
|||
1853
|
||||
1854
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue