]> gitweb.factorcode.org Git - factor.git/commitdiff
random: speedup random-integer some more.
authorJohn Benediktsson <mrjbq7@gmail.com>
Fri, 1 Mar 2013 03:47:55 +0000 (19:47 -0800)
committerJohn Benediktsson <mrjbq7@gmail.com>
Fri, 1 Mar 2013 03:47:55 +0000 (19:47 -0800)
Better code generation by specializing on fixnum/bignum.

basis/random/random.factor

index 477109ec6bf1897e556ce1551d384d26e0592df8..00a03aec6fc083890df7c526d9861dfee3fee455 100644 (file)
@@ -55,8 +55,12 @@ TYPED: random-bytes ( n: fixnum -- byte-array: byte-array )
         [ 32 shift obj random-32* + ] [ 32 + ] [ 32 - ] tri*
     ] while drop [ n * ] [ neg shift ] bi* ; inline
 
-: (random-integer) ( n obj -- n' )
-    [ dup #bits ] dip (random-bits) ;
+: ((random-integer)) ( n obj -- n' )
+    [ dup #bits ] dip (random-bits) ; inline
+
+GENERIC# (random-integer) 1 ( n obj -- n )
+M: fixnum (random-integer) ( n obj -- n' ) ((random-integer)) ;
+M: bignum (random-integer) ( n obj -- n' ) ((random-integer)) ;
 
 : random-integer ( n -- n' )
     random-generator get (random-integer) ;