これで @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