This is the mail archive of the kawa@sourceware.org mailing list for the Kawa project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

effectiveness of gnu.math


I never expected to get such results (for example, factorial):

;; java.math.BigInteger over `do`

(define (!bil x :: <java.math.BigInteger>) :: <java.math.BigInteger>
(do (((i :: <java.math.BigInteger>) x (i:subtract java.math.BigInteger:ONE))
((k :: <java.math.BigInteger>) java.math.BigInteger:ONE (k:multiply i)))
((= i 1) k)))


Duration of (!bil 50000) ~ 21.797 sec.

;; gnu.math over `do`

(define (!il x :: <integer>) :: <integer>
 (do (((i :: <integer>) x (- i 1))
      ((k :: <integer>) 1 (* k i)))
     ((= i 1) k)))

Duration of (!il 50000) ~ 12.734 sec.

;; untyped over recursive-tail

(define (!u x)
 (letrec ((!!u (lambda (i k)
              (if (= i 1) k (!!u (- i 1) (* i k))))))
   (!!u x 1)))

Duration of (!u 50000) ~ 12.813 sec.

Is BigInteger slower gnu.math?
Is untyped code slower typed code very slightly?

--
WBR, Yaroslav Kavenchuk.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]