diff --git a/extra/benchmark/timers/timers.factor b/extra/benchmark/timers/timers.factor new file mode 100644 index 0000000000..e81e536705 --- /dev/null +++ b/extra/benchmark/timers/timers.factor @@ -0,0 +1,25 @@ +USING: concurrency.flags kernel math namespaces timers ; +IN: benchmark.timers + +SYMBOL: loop-flag +SYMBOL: loop-count +SYMBOL: loop-max + +: inner-loop ( -- ) + loop-count counter loop-max get-global > [ + loop-flag get-global raise-flag + ] when ; + +: outer-loop ( n -- ) + loop-max set-global + 0 loop-count set-global + loop-flag set-global + [ inner-loop ] 1 every + loop-flag get-global wait-for-flag + stop-timer ; + +: timers-benchmark ( -- ) + 20,000 [ outer-loop ] [ loop-max get-global assert= ] bi ; + +MAIN: timers-benchmark +