MSUTimer  v0.01 alpha
Simple High Resolution Timer for C
msutimer.h
Go to the documentation of this file.
1 /*
2 Zlib License
3 --------------------------------------------------
4 Copyright (c) 2021 migf1@hotmail.com
5 
6 This software is provided 'as-is', without any express or implied
7 warranty. In no event will the authors be held liable for any damages
8 arising from the use of this software.
9 
10 Permission is granted to anyone to use this software for any purpose,
11 including commercial applications, and to alter it and redistribute it
12 freely, subject to the following restrictions:
13 
14 1. The origin of this software must not be misrepresented; you must not
15  claim that you wrote the original software. If you use this software
16  in a product, an acknowledgment in the product documentation would be
17  appreciated but is not required.
18 2. Altered source versions must be plainly marked as such, and must not be
19  misrepresented as being the original software.
20 3. This notice may not be removed or altered from any source distribution.
21 --------------------------------------------------
22 */
38 #ifndef MSUTIMER_H /* start of inclusion guard */
39 #define MSUTIMER_H
40 
41 #include <stddef.h> // size_t, etc
42 #include <stdbool.h> // C99: bool, true, false
43 
45 typedef struct MSUTimer_ MSUTimer;
46 
51 #define MSUT_US2MS(usecs) ((usecs) * 0.001)
52 #define MSUT_US2S(usecs) ((usecs) * 0.000001)
54 
55 MSUTimer *msutimer_new(void);
56 MSUTimer *msutimer_free(MSUTimer *timer);
57 double msutimer_accuracy_usecs(MSUTimer *timer);
58 double msutimer_gettime( MSUTimer *timer );
59 double msutimer_diff_usecs(MSUTimer *timer);
60 double msutimer_diff_msecs(MSUTimer *timer);
61 double msutimer_diff_secs(MSUTimer *timer);
62 
64 double msutimer_bench(MSUTimer *timer, size_t nrepeats, bool (*callback)(void *), void *userdata, size_t *erepeat);
66 double msutimer_bench_average(MSUTimer *timer, size_t nrepeats, bool (*callback)(void *), void *userdata, size_t *erepeat);
68 double msutimer_bench_median(MSUTimer *timer, size_t nrepeats, bool (*callback)(void *), void *userdata, size_t *erepeat);
69 
70 #endif /* end of inclusion guard */
double msutimer_bench(MSUTimer *timer, size_t nrepeats, bool(*callback)(void *), void *userdata, size_t *erepeat)
Get callback's execution time.
Definition: msutimer.c:544
double msutimer_bench_average(MSUTimer *timer, size_t nrepeats, bool(*callback)(void *), void *userdata, size_t *erepeat)
Get callback's average execution time.
Definition: msutimer.c:610
double msutimer_accuracy_usecs(MSUTimer *timer)
Get MSUTimer accuracy.
Definition: msutimer.c:469
double msutimer_diff_usecs(MSUTimer *timer)
Get updated time-difference in microseconds.
Definition: msutimer.c:353
double msutimer_diff_secs(MSUTimer *timer)
Get updated time-difference in seconds.
Definition: msutimer.c:409
double msutimer_diff_msecs(MSUTimer *timer)
Get updated time-difference in milliseconds.
Definition: msutimer.c:381
double msutimer_bench_median(MSUTimer *timer, size_t nrepeats, bool(*callback)(void *), void *userdata, size_t *erepeat)
Get callback's median execution time.
Definition: msutimer.c:681
MSUTimer * msutimer_free(MSUTimer *timer)
Free an existing timer.
Definition: msutimer.c:262
MSUTimer * msutimer_new(void)
Create a new timer.
Definition: msutimer.c:205
double msutimer_gettime(MSUTimer *timer)
Get current time & update time-difference.
Definition: msutimer.c:306