1 module tests.time;
2
3
4 version (WebAssembly)
5 {
6 alias int time_t;
7 alias int clockid_t;
8 enum CLOCK_REALTIME = 0;
9
10 struct timespec
11 {
12 time_t tv_sec;
13 int tv_nsec;
14 }
15
16 extern (C) int clock_gettime(clockid_t, timespec*) @nogc nothrow @system;
17
18 struct Time
19 {
20 static long getUSecTime()
21 {
22 time_t time;
23 timespec spec;
24
25 clock_gettime(CLOCK_REALTIME, &spec);
26
27 //time = spec.tv_sec;
28 return spec.tv_sec * 1000_000 + spec.tv_nsec / 1000; //time / 1000_000;
29 }
30 }
31 }
32 else version (Windows)
33 {
34 import core.stdc.stdio : printf;
35 import core.sys.windows.windows;
36
37 struct Time
38 {
39 static long getUSecTime()
40 {
41 LARGE_INTEGER time, freq;
42 QueryPerformanceFrequency(&freq);
43 QueryPerformanceCounter(&time);
44 return time.QuadPart / (freq.QuadPart / 1000_000);
45 }
46 }
47 }
48 else version (Posix)
49 {
50 import core.stdc.stdio : printf;
51 import core.sys.posix.time;
52
53 struct Time
54 {
55 static long getUSecTime()
56 {
57 time_t time;
58 timespec spec;
59
60 clock_gettime(CLOCK_REALTIME, &spec);
61
62 //time = spec.tv_sec;
63 return spec.tv_sec * 1000_000 + spec.tv_nsec / 1000; //time / 1000_000;
64 }
65 }
66 }