Skip to content

Instantly share code, notes, and snippets.

@zoka
Created March 27, 2010 21:18
Show Gist options
  • Save zoka/346357 to your computer and use it in GitHub Desktop.
Save zoka/346357 to your computer and use it in GitHub Desktop.
Consecutive get_monotonic_time statistics
for 1000000 invocations:
282 nsec ... 6 times
284 nsec ... 5049 times
285 nsec ... 67767 times
286 nsec ... 7659 times
288 nsec ... 481497 times
289 nsec ... 16496 times
290 nsec ... 21789 times
291 nsec ... 308581 times
292 nsec ... 36755 times
294 nsec ... 5 times
296 nsec ... 3 times
297 nsec ... 8 times
300 nsec ... 31 times
301 nsec ... 1 times
303 nsec ... 17 times
304 nsec ... 1 times
306 nsec ... 18 times
307 nsec ... 1 times
309 nsec ... 1 times
312 nsec ... 12 times
315 nsec ... 11 times
316 nsec ... 1 times
318 nsec ... 1 times
321 nsec ... 1 times
322 nsec ... 1 times
324 nsec ... 2 times
354 nsec ... 1 times
357 nsec ... 1 times
360 nsec ... 1 times
366 nsec ... 1 times
375 nsec ... 1 times
378 nsec ... 1 times
390 nsec ... 1 times
399 nsec ... 1 times
408 nsec ... 1 times
414 nsec ... 1 times
415 nsec ... 1 times
420 nsec ... 1 times
422 nsec ... 1 times
429 nsec ... 1 times
432 nsec ... 2 times
435 nsec ... 1 times
442 nsec ... 1 times
450 nsec ... 3 times
453 nsec ... 1 times
456 nsec ... 146 times
457 nsec ... 10 times
458 nsec ... 2849 times
459 nsec ... 45445 times
460 nsec ... 5681 times
462 nsec ... 34 times
463 nsec ... 3 times
468 nsec ... 1 times
474 nsec ... 1 times
477 nsec ... 3 times
486 nsec ... 1 times
489 nsec ... 2 times
495 nsec ... 1 times
498 nsec ... 2 times
501 nsec ... 2 times
507 nsec ... 1 times
522 nsec ... 1 times
537 nsec ... 1 times
544 nsec ... 1 times
603 nsec ... 1 times
618 nsec ... 1 times
690 nsec ... 1 times
696 nsec ... 3 times
729 nsec ... 1 times
774 nsec ... 1 times
783 nsec ... 1 times
801 nsec ... 1 times
828 nsec ... 1 times
1290 nsec ... 1 times
1305 nsec ... 1 times
1323 nsec ... 1 times
1377 nsec ... 2 times
1383 nsec ... 1 times
1488 nsec ... 1 times
1491 nsec ... 1 times
1492 nsec ... 1 times
1495 nsec ... 1 times
1506 nsec ... 1 times
1509 nsec ... 1 times
1518 nsec ... 2 times
1524 nsec ... 1 times
1525 nsec ... 1 times
1530 nsec ... 2 times
1533 nsec ... 2 times
1534 nsec ... 1 times
1536 nsec ... 1 times
1537 nsec ... 1 times
1539 nsec ... 1 times
1542 nsec ... 4 times
1546 nsec ... 1 times
1548 nsec ... 3 times
1551 nsec ... 1 times
1555 nsec ... 1 times
1557 nsec ... 4 times
1560 nsec ... 2 times
1563 nsec ... 1 times
1566 nsec ... 1 times
1573 nsec ... 2 times
1575 nsec ... 2 times
1576 nsec ... 1 times
1578 nsec ... 2 times
1587 nsec ... 1 times
1591 nsec ... 1 times
1599 nsec ... 1 times
1600 nsec ... 1 times
1612 nsec ... 1 times
1633 nsec ... 1 times
1759 nsec ... 1 times
2463 nsec ... 1 times
2532 nsec ... 1 times
2548 nsec ... 1 times
2574 nsec ... 1 times
2611 nsec ... 1 times
2937 nsec ... 1 times
3456 nsec ... 1 times
3489 nsec ... 1 times
3505 nsec ... 1 times
3513 nsec ... 1 times
4995 nsec ... 1 times
6319 nsec ... 1 times
#include <time.h>
#include <stdio.h>
#include <unistd.h>
// compile on OS X: g++ -o mondiff nmondiff.cc
// compile Linux: g++ -o mondiff nmondiff.cc -lrt
#ifdef __APPLE__
#include <mach/mach_time.h>
void get_monotonic_time(timespec* tp) {
static mach_timebase_info_data_t __clock_gettime_inf;
uint64_t now,nano;
now = mach_absolute_time();
if (0 == __clock_gettime_inf.denom)
mach_timebase_info(&__clock_gettime_inf);
nano = now * __clock_gettime_inf.numer / __clock_gettime_inf.denom;
tp->tv_sec = nano * 1e-9;
tp->tv_nsec = nano - (tp->tv_sec * 1e9);
}
#else
void get_monotonic_time(timespec* tp) {
clock_gettime(CLOCK_MONOTONIC, tp);
}
#endif
int main() {
int i;
static int diff[100000];
timespec first, second;
long long f,s, delta;
for (i = 0; i < 1000000; i++)
{
get_monotonic_time(&first);
get_monotonic_time(&second);
f = (long long) first.tv_sec * 1000000000 + first.tv_nsec;
s = (long long) second.tv_sec * 1000000000 + second.tv_nsec;
int d = (int) (s-f);
if (d < 100000)
diff[d]++;
else
printf("Huge diff: %d nsec !!!\n", d);
}
printf("Consecutive get_monotonic_time statistics\n");
printf("for 1000000 invocations:\n");
for (i = 0; i < 100000; i++)
if (diff[i])
printf("%6d nsec ... %6d times\n", i, diff[i]);
}
Consecutive get_monotonic_time statistics
for 1000000 invocations:
78 nsec ... 9343 times
79 nsec ... 91 times
80 nsec ... 45087 times
81 nsec ... 444323 times
82 nsec ... 50213 times
84 nsec ... 443631 times
85 nsec ... 4278 times
86 nsec ... 150 times
87 nsec ... 1631 times
88 nsec ... 181 times
90 nsec ... 69 times
92 nsec ... 1 times
93 nsec ... 20 times
94 nsec ... 5 times
96 nsec ... 8 times
98 nsec ... 2 times
99 nsec ... 23 times
100 nsec ... 1 times
102 nsec ... 61 times
104 nsec ... 15 times
105 nsec ... 114 times
106 nsec ... 19 times
108 nsec ... 193 times
109 nsec ... 2 times
110 nsec ... 14 times
111 nsec ... 190 times
112 nsec ... 20 times
114 nsec ... 131 times
115 nsec ... 1 times
116 nsec ... 1 times
117 nsec ... 10 times
118 nsec ... 3 times
120 nsec ... 3 times
123 nsec ... 8 times
124 nsec ... 1 times
126 nsec ... 18 times
128 nsec ... 2 times
129 nsec ... 19 times
130 nsec ... 3 times
132 nsec ... 10 times
134 nsec ... 1 times
135 nsec ... 1 times
138 nsec ... 4 times
140 nsec ... 1 times
141 nsec ... 3 times
142 nsec ... 1 times
144 nsec ... 4 times
146 nsec ... 1 times
147 nsec ... 4 times
148 nsec ... 1 times
150 nsec ... 4 times
153 nsec ... 3 times
156 nsec ... 1 times
162 nsec ... 1 times
165 nsec ... 4 times
166 nsec ... 1 times
168 nsec ... 2 times
171 nsec ... 2 times
172 nsec ... 1 times
180 nsec ... 1 times
183 nsec ... 1 times
186 nsec ... 1 times
189 nsec ... 1 times
195 nsec ... 1 times
198 nsec ... 1 times
205 nsec ... 1 times
216 nsec ... 2 times
1167 nsec ... 1 times
1173 nsec ... 1 times
1212 nsec ... 1 times
1215 nsec ... 1 times
1221 nsec ... 1 times
1491 nsec ... 1 times
1686 nsec ... 1 times
1821 nsec ... 1 times
1968 nsec ... 1 times
2032 nsec ... 1 times
2034 nsec ... 1 times
2061 nsec ... 1 times
2142 nsec ... 1 times
2175 nsec ... 1 times
2208 nsec ... 1 times
2211 nsec ... 1 times
2229 nsec ... 1 times
2392 nsec ... 1 times
2727 nsec ... 1 times
2739 nsec ... 1 times
2778 nsec ... 1 times
2881 nsec ... 1 times
3159 nsec ... 1 times
3214 nsec ... 1 times
3403 nsec ... 1 times
3465 nsec ... 1 times
3618 nsec ... 1 times
3633 nsec ... 1 times
3642 nsec ... 1 times
3688 nsec ... 1 times
3738 nsec ... 1 times
3748 nsec ... 1 times
3883 nsec ... 1 times
4575 nsec ... 1 times
5001 nsec ... 1 times
6244 nsec ... 1 times
6510 nsec ... 1 times
7171 nsec ... 1 times
8224 nsec ... 1 times
8573 nsec ... 1 times
9391 nsec ... 1 times
9508 nsec ... 1 times
9607 nsec ... 1 times
10690 nsec ... 1 times
11704 nsec ... 1 times
11980 nsec ... 1 times
12716 nsec ... 1 times
12991 nsec ... 1 times
14212 nsec ... 1 times
17258 nsec ... 1 times
17357 nsec ... 1 times
19761 nsec ... 1 times
19983 nsec ... 1 times
20417 nsec ... 1 times
26295 nsec ... 1 times
26835 nsec ... 1 times
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment