This is the mail archive of the
kawa@sourceware.org
mailing list for the Kawa project.
effectiveness of gnu.math
- From: Yaroslav Kavenchuk <kavenchuk at gmail dot com>
- To: kawa at sourceware dot org
- Date: Fri, 25 Jan 2008 11:00:52 +0200
- Subject: 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.