これで @tk_riple さんの第二次VS SBCL Bignum戦争開幕?
— llibra (@l_libra) July 5, 2013
期待されているなぁ・・・相手GMPだけど・・・
期待されると応えようともがく性分なので、とりあえず現状でどれくらいGMPと差があるのか適当にテストしてみることにした。GMPと言えばMoshが使っているのでここと比較。なぜか?機械語吐き出すSBCLと戦う前に同じバイトコードなScheme処理系のMoshを倒さないとオーバーヘッドの部分で確実に負けることが確定しているから。
テストコードは以下(ここのPython用のをSchemeに移植):
(import (rnrs) (time))
(define (factorial n stop)
(let loop ((n n) (o 1))
(if (> n stop)
(loop (- n 1) (* o n))
o)))
(define (choose n k)
(/ (factorial n k) (factorial (- n k) 0)))
(time (choose 50000 50))
#|
;; Mosh用timeライブラリ
;; time.scm
(library (time) (export time) (import (mosh)))
|#
以下が結果。
% time sash test.scm ;; (choose 50000 50) ;; 6.536399841308594 real 11.13800 user 1.669000 sys sash test.scm 11.17s user 1.76s system 194% cpu 6.661 total % time mosh --loadpath=. test.scm ;;1.4351999759674072 real 1.264 user 0.172 sys mosh --loadpath=. test.scm 1.28s user 0.20s system 99% cpu 1.482 totalまぁ、分かってはいたのだがここまで差があるのか・・・
SagittariusはBoehmGCがGC用スレッドを持ってるからRealとUser時間が倍違うのか?とりあえずReal時間だけ気にすることにする。
このベンチだと単純に乗算だけなんだけど、とりあえずそこからか・・・先は長そうである・・・
No comments:
Post a Comment