Two new benchmarks
parent
2c9bb27eb2
commit
1c93ac733c
|
@ -0,0 +1,14 @@
|
||||||
|
! Copyright (C) 2008 Slava Pestov.
|
||||||
|
! See http://factorcode.org/license.txt for BSD license.
|
||||||
|
USING: math.ranges math.parser math.vectors sets sequences
|
||||||
|
kernel io ;
|
||||||
|
IN: benchmark.beust1
|
||||||
|
|
||||||
|
: count-numbers ( max -- n )
|
||||||
|
1 [a,b] [ number>string all-unique? ] count ; inline
|
||||||
|
|
||||||
|
: beust ( -- )
|
||||||
|
10000000 count-numbers
|
||||||
|
number>string " unique numbers." append print ;
|
||||||
|
|
||||||
|
MAIN: beust
|
|
@ -0,0 +1,39 @@
|
||||||
|
! Copyright (C) 2008 Slava Pestov.
|
||||||
|
! See http://factorcode.org/license.txt for BSD license.
|
||||||
|
USING: math math.ranges math.parser sequences kernel io locals ;
|
||||||
|
IN: benchmark.beust2
|
||||||
|
|
||||||
|
:: (count-numbers) ( remaining first value used max listener -- ? )
|
||||||
|
10 first - [| i |
|
||||||
|
[let* | digit [ i first + ]
|
||||||
|
mask [ digit 2^ ]
|
||||||
|
value' [ i value + ] |
|
||||||
|
used mask bitand zero? [
|
||||||
|
value max > [ t ] [
|
||||||
|
remaining 1 <= [
|
||||||
|
listener call f
|
||||||
|
] [
|
||||||
|
remaining 1-
|
||||||
|
0
|
||||||
|
value' 10 *
|
||||||
|
used mask bitor
|
||||||
|
max
|
||||||
|
listener
|
||||||
|
(count-numbers)
|
||||||
|
] if
|
||||||
|
] if
|
||||||
|
] [ f ] if
|
||||||
|
]
|
||||||
|
] contains? ; inline
|
||||||
|
|
||||||
|
:: count-numbers ( max listener -- )
|
||||||
|
10 [ 1+ 1 1 0 max listener (count-numbers) ] contains? drop ;
|
||||||
|
inline
|
||||||
|
|
||||||
|
:: beust ( -- )
|
||||||
|
[let | i! [ 0 ] |
|
||||||
|
10000000000 [ i 1+ i! ] count-numbers
|
||||||
|
i number>string " unique numbers." append print
|
||||||
|
] ;
|
||||||
|
|
||||||
|
MAIN: beust
|
Loading…
Reference in New Issue