]> gitweb.factorcode.org Git - factor.git/blob - extra/benchmark/timers/timers.factor
e81e53670563c93a790f6193e164711e89e61bb1
[factor.git] / extra / benchmark / timers / timers.factor
1 USING: concurrency.flags kernel math namespaces timers ;
2 IN: benchmark.timers
3
4 SYMBOL: loop-flag
5 SYMBOL: loop-count
6 SYMBOL: loop-max
7
8 : inner-loop ( -- )
9     loop-count counter loop-max get-global > [
10         loop-flag get-global raise-flag
11     ] when ;
12
13 : outer-loop ( n -- )
14     loop-max set-global
15     0 loop-count set-global
16     <flag> loop-flag set-global
17     [ inner-loop ] 1 every
18     loop-flag get-global wait-for-flag
19     stop-timer ;
20
21 : timers-benchmark ( -- )
22     20,000 [ outer-loop ] [ loop-max get-global assert= ] bi ;
23
24 MAIN: timers-benchmark
25