From 26a971f624d4024d5398cc813c15953d0005701e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joel=20H=C3=B6ner?= Date: Thu, 6 Jul 2017 08:04:35 +0200 Subject: [PATCH] Added timing code for macOS (PerfTest) --- tools/PerfTest.c | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/tools/PerfTest.c b/tools/PerfTest.c index 30dfa23..954efff 100644 --- a/tools/PerfTest.c +++ b/tools/PerfTest.c @@ -70,7 +70,25 @@ double GetCounter() return (double)(li.QuadPart - CounterStart) / CounterFreq; } #elif defined(ZYDIS_APPLE) -// TODO: +uint64_t counterStart = 0; +mach_timebase_info_data_t timebaseInfo; + +void StartCounter() +{ + counterStart = mach_absolute_time(); +} + +double GetCounter() +{ + uint64_t elapsed = mach_absolute_time() - counterStart; + + if (timebaseInfo.denom == 0) + { + mach_timebase_info(&timebaseInfo); + } + + return (double)elapsed * timebaseInfo.numer / timebaseInfo.denom / 1000000; +} #elif defined(ZYDIS_LINUX) // TODO: #endif @@ -231,9 +249,9 @@ void generateTestData(FILE* file, uint8_t encoding) int main(int argc, char** argv) { - if (argc < 3 || (!strcmp(argv[1], "-test") && !strcmp(argv[1], "-generate"))) + if (argc < 3 || (strcmp(argv[1], "-test") && strcmp(argv[1], "-generate"))) { - fputs("Usage: PerfTest -[test|generate] [directory]", stderr); + fputs("Usage: PerfTest -[test|generate] [directory]\n", stderr); return EXIT_FAILURE; } @@ -307,8 +325,6 @@ int main(int argc, char** argv) } } - getchar(); - return 0; }