diff --git a/extra/benchmark/sieve/sieve.factor b/extra/benchmark/sieve/sieve.factor new file mode 100644 index 0000000000..b9168b3f8c --- /dev/null +++ b/extra/benchmark/sieve/sieve.factor @@ -0,0 +1,22 @@ +USING: bit-arrays kernel locals math math.functions math.ranges +sequences ; +IN: benchmark.sieve + +:: sieve ( n -- #primes ) + n dup odd? [ 1 + ] when 2/ :> sieve + t 0 sieve set-nth + + 3 n sqrt 2 [| i | + i 2/ sieve nth [ + i sq n i 2 * [| j | + t j 2/ sieve set-nth + ] each + ] unless + ] each + + sieve [ not ] count 1 + ; + +: sieve-benchmark ( -- ) + 100,000,000 sieve 5,761,455 assert= ; + +MAIN: sieve-benchmark