Add a time measuring lib to copy/paste.
This commit is contained in:
parent
2114d03c4c
commit
97248c9681
1 changed files with 57 additions and 0 deletions
57
c/time-measuring.c
Normal file
57
c/time-measuring.c
Normal file
|
@ -0,0 +1,57 @@
|
||||||
|
#include <stdio.h>
|
||||||
|
//#include <sys/time.h>
|
||||||
|
#include <time.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
#define BILLION 1000000000L
|
||||||
|
#define MILLION 1000000L
|
||||||
|
#define THOUSAND 1000L
|
||||||
|
|
||||||
|
void get_time_ts(struct timespec *t0) {
|
||||||
|
if (clock_gettime(CLOCK_REALTIME, t0) == -1) {
|
||||||
|
perror("clock_gettime");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
long long duration_ns(struct timespec t0, struct timespec t1) {
|
||||||
|
return ((t1.tv_sec - t0.tv_sec)*BILLION) + (t1.tv_nsec - t0.tv_nsec);
|
||||||
|
}
|
||||||
|
|
||||||
|
void print_time_ns(long long time) {
|
||||||
|
printf("%llds %lldms %lldµ %lldns\n"
|
||||||
|
, time/BILLION
|
||||||
|
, (time/MILLION)%THOUSAND
|
||||||
|
, (time/THOUSAND)%THOUSAND
|
||||||
|
, time%THOUSAND
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
int main (int argc, char** argv) {
|
||||||
|
struct timespec t0, t1;
|
||||||
|
|
||||||
|
get_time_ts(&t0);
|
||||||
|
|
||||||
|
int i = 0;
|
||||||
|
while (i < 10000) { i++; }
|
||||||
|
|
||||||
|
get_time_ts(&t1);
|
||||||
|
|
||||||
|
long long time = duration_ns(t0, t1);
|
||||||
|
|
||||||
|
print_time_ns(time);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* // For limited precision: timeval structure + gettimeofday function.
|
||||||
|
struct timeval t0, t1;
|
||||||
|
|
||||||
|
gettimeofday (&t0, NULL);
|
||||||
|
int i = 0;
|
||||||
|
while (i < 10000) { i++; }
|
||||||
|
|
||||||
|
gettimeofday (&t1, NULL);
|
||||||
|
|
||||||
|
printf("%ld ms\n", (t1.tv_sec - t0.tv_sec)*BILLION + (t1.tv_usec - t0.tv_usec));
|
||||||
|
*/
|
Loading…
Add table
Reference in a new issue