1/* compare CPUTimeRead() vs CFAbsoluteTimeGetCurrent() */
2
3#include <stdio.h>
4#include <stdlib.h>
5#include "cputime.h"
6#include <CoreFoundation/CoreFoundation.h>
7
8#define WAIT_TIME_SEC	1.0
9
10int main()
11{
12	CPUTime cputimeStart, cputimeEnd;
13	CFAbsoluteTime start;
14
15	printf("Resolution on this machine: %f nanoseconds\n",
16		CPUTimeDeltaUs(0ULL, 1ULL) * 1000.0);
17
18	start = CFAbsoluteTimeGetCurrent();
19	cputimeStart = CPUTimeRead();
20	while((CFAbsoluteTimeGetCurrent() - start) < WAIT_TIME_SEC) {
21		;
22	}
23	cputimeEnd = CPUTimeRead();
24
25	printf("Waited %f sec; elapsed CPUTime %f s\n",
26		WAIT_TIME_SEC, CPUTimeDeltaSec(cputimeStart, cputimeEnd));
27	printf("cputimeStart %08X:%08X   cputimeEnd %08X:%08X\n",
28		(unsigned)(cputimeStart >> 32),
29		(unsigned)(cputimeStart & 0xffffffffULL),
30		(unsigned)(cputimeEnd >> 32),
31		(unsigned)(cputimeEnd & 0xffffffffULL));
32	printf("cputime raw delta %lu\n",
33		(unsigned long)(cputimeEnd - cputimeStart));
34
35	return 0;
36}
37