@@ -76,7 +76,10 @@ proc separator*() =
76
76
proc report (op, elliptic: string , start, stop: MonoTime , startClk, stopClk: int64 , iters: int ) =
77
77
let ns = inNanoseconds ((stop- start) div iters)
78
78
let throughput = 1 e9 / float64 (ns)
79
- echo & " { op:<40 } { elliptic:<40 } { throughput:>15.3f } ops/s { ns:>9 } ns/op { (stopClk - startClk) div iters:>9 } CPU cycles (approx)"
79
+ when SupportsGetTicks :
80
+ echo & " { op:<40 } { elliptic:<40 } { throughput:>15.3f } ops/s { ns:>9 } ns/op { (stopClk - startClk) div iters:>9 } CPU cycles (approx)"
81
+ else :
82
+ echo & " { op:<40 } { elliptic:<40 } { throughput:>15.3f } ops/s { ns:>9 } ns/op"
80
83
81
84
macro fixEllipticDisplay (T: typedesc ): untyped =
82
85
# At compile-time, enums are integers and their display is buggy
@@ -90,12 +93,18 @@ macro fixEllipticDisplay(T: typedesc): untyped =
90
93
91
94
template bench (op: string , T: typedesc , iters: int , body: untyped ): untyped =
92
95
let start = getMonotime ()
93
- let startClk = getTicks ()
96
+ when SupportsGetTicks :
97
+ let startClk = getTicks ()
94
98
for _ in 0 ..< iters:
95
99
body
96
- let stopClk = getTicks ()
100
+ when SupportsGetTicks :
101
+ let stopClk = getTicks ()
97
102
let stop = getMonotime ()
98
103
104
+ when not SupportsGetTicks :
105
+ let startClk = - 1 'i64
106
+ let stopClk = - 1 'i64
107
+
99
108
report (op, fixEllipticDisplay (T), start, stop, startClk, stopClk, iters)
100
109
101
110
proc addBench * (T: typedesc , iters: int ) =
0 commit comments