From 2eda7d5817db843dd55e249adfb501abd822ea0a Mon Sep 17 00:00:00 2001 From: Jaakko Keränen Date: Sun, 26 Sep 2021 13:46:12 +0300 Subject: Added a PerfTimer utility --- src/ui/util.c | 13 +++++++++++++ src/ui/util.h | 16 ++++++++++++++++ 2 files changed, 29 insertions(+) (limited to 'src/ui') diff --git a/src/ui/util.c b/src/ui/util.c index c2bc8f08..5327e103 100644 --- a/src/ui/util.c +++ b/src/ui/util.c @@ -3042,3 +3042,16 @@ iWidget *makeTranslation_Widget(iWidget *parent) { setupSheetTransition_Mobile(dlg, iTrue); return dlg; } + +void init_PerfTimer(iPerfTimer *d) { + d->ticks = SDL_GetPerformanceCounter(); +} + +uint64_t elapsedMicroseconds_PerfTimer(const iPerfTimer *d) { + const uint64_t now = SDL_GetPerformanceCounter(); + return (uint64_t) (((double) (now - d->ticks)) / (double) SDL_GetPerformanceFrequency() * 1.0e6); +} + +void print_PerfTimer(const iPerfTimer *d, const char *msg) { + printf("[%s] %llu \u03bcs\n", msg, (unsigned long long) elapsedMicroseconds_PerfTimer(d)); +} diff --git a/src/ui/util.h b/src/ui/util.h index f64fac7e..94e5d8bd 100644 --- a/src/ui/util.h +++ b/src/ui/util.h @@ -316,3 +316,19 @@ iWidget * makeTranslation_Widget (iWidget *parent); const char * languageId_String (const iString *menuItemLabel); int languageIndex_CStr (const char *langId); + +/*-----------------------------------------------------------------------------------------------*/ + +iDeclareType(PerfTimer) + +struct Impl_PerfTimer { + uint64_t ticks; +}; + +void init_PerfTimer (iPerfTimer *); +uint64_t elapsedMicroseconds_PerfTimer (const iPerfTimer *); +void print_PerfTimer (const iPerfTimer *, const char *msg); + +#define start_PerfTimer(name) iPerfTimer _##name##_PerfTimer; init_PerfTimer(&_##name##_PerfTimer) +#define stop_PerfTimer(name) print_PerfTimer(&_##name##_PerfTimer, #name) + -- cgit v1.2.3