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