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