call/ccのコピー回数を2回から1回に減らした。今のところばっちり動いているのでOKだろう。
ここまできたらベンチマーク。最初ctakとfibcを除くすべてが遅くなったのであせったが、フルビルドしたら戻った。
結果をmosh(0.2.6)と比較(Core2Duo 3GHz, Cygwin on Windows XP, memory 3GB)
まずはSagittarius:
;; GABRIEL ;; boyer (x3) ;; 0.664000 real 0.610000 user 0.000000 sys ;; ---------------------------------------------------------------- ;; browse (x120) ;; 6.073000 real 6.031000 user 0.000000 sys ;; ---------------------------------------------------------------- ;; cpstak (x80) ;; 0.969000 real 0.969000 user 0.000000 sys ;; ---------------------------------------------------------------- ;; ctak (x25) ;; 2.972000 real 2.953000 user 0.000000 sys ;; ---------------------------------------------------------------- ;; dderiv (x160000) ;; 1.307000 real 1.297000 user 0.000000 sys ;; ---------------------------------------------------------------- ;; deriv (x320000) ;; 2.092000 real 2.078000 user 0.000000 sys ;; ---------------------------------------------------------------- ;; destruc (x100) ;; 1.514000 real 1.500000 user 0.000000 sys ;; ---------------------------------------------------------------- ;; diviter (x200000) ;; 1.698000 real 1.703000 user 0.000000 sys ;; ---------------------------------------------------------------- ;; divrec (x140000) ;; 1.307000 real 1.312000 user 0.000000 sys ;; ---------------------------------------------------------------- ;; puzzle (x12) ;; 0.619000 real 0.625000 user 0.000000 sys ;; ---------------------------------------------------------------- ;; takl (x35) ;; 0.704000 real 0.703000 user 0.000000 sys ;; ---------------------------------------------------------------- ;; triangl (x1) ;; 0.677000 real 0.672000 user 0.000000 sys ;; ---------------------------------------------------------------- ;; ARITHMETIC ;; fft (x200) ;; 0.419000 real 0.422000 user 0.000000 sys ;; ---------------------------------------------------------------- ;; fib (x1) ;; 1.542000 real 1.547000 user 0.000000 sys ;; ---------------------------------------------------------------- ;; fibc (x50) ;; 0.994000 real 0.984000 user 0.000000 sys ;; ---------------------------------------------------------------- ;; fibfp (x1) ;; 5.692000 real 5.610000 user 0.047000 sys ;; ---------------------------------------------------------------- ;; mbrot (x10) ;; 1.676000 real 1.656000 user 0.000000 sys ;; ---------------------------------------------------------------- ;; nucleic (x1) ;; 1.211000 real 1.188000 user 0.000000 sys ;; ---------------------------------------------------------------- ;; pnpoly (x10000) ;; 0.639000 real 0.641000 user 0.000000 sys ;; ---------------------------------------------------------------- ;; sum (x1000) ;; 0.360000 real 0.359000 user 0.000000 sys ;; ---------------------------------------------------------------- ;; sumfp (x600) ;; 1.162000 real 1.157000 user 0.000000 sys ;; ---------------------------------------------------------------- ;; tak (x200) ;; 0.592000 real 0.593000 user 0.000000 sys ;; ---------------------------------------------------------------- ;; MISCELLANEOUS ;; conform (x4) ;; 0.842000 real 0.844000 user 0.000000 sys ;; ---------------------------------------------------------------- ;; earley (x20) ;; 0.366000 real 0.375000 user 0.000000 sys ;; ---------------------------------------------------------------- ;; graphs (x15) ;; 0.572000 real 0.562000 user 0.000000 sys ;; ---------------------------------------------------------------- ;; mazefun (x100) ;; 0.566000 real 0.563000 user 0.000000 sys ;; ---------------------------------------------------------------- ;; nqueens (x150) ;; 0.354000 real 0.344000 user 0.000000 sys ;; ---------------------------------------------------------------- ;; paraffins (x100) ;; 0.616000 real 0.625000 user 0.000000 sys ;; ---------------------------------------------------------------- ;; peval (x20) ;; 0.949000 real 0.938000 user 0.000000 sys ;; ---------------------------------------------------------------- ;; ray (x1) ;; 1.656000 real 1.610000 user 0.046000 sys ;; ---------------------------------------------------------------- ;; scheme (x3000) ;; 0.852000 real 0.844000 user 0.000000 sys ;; ----------------------------------------------------------------browse及びfibfpが遅いが他はまずまず。ctakは改善前から4秒速くなってるので劇的に良くなったといえるだろう。
次にmosh:
;; GABRIEL
;; boyer (x3)
;;4.444999933242798 real 4.406 user 0.0 sys
;; ----------------------------------------------------------------
;; browse (x120)
;;5.337000131607056 real 5.327999999999999 user 0.0 sys
;; ----------------------------------------------------------------
;; cpstak (x80)
;;1.5829999446868896 real 1.5630000000000006 user 0.0 sys
;; ----------------------------------------------------------------
;; ctak (x25)
;;5.3460001945495605 real 5.311999999999999 user 0.0 sys
;; ----------------------------------------------------------------
;; dderiv (x160000)
;;2.8910000324249268 real 2.875 user 0.0 sys
;; ----------------------------------------------------------------
;; deriv (x320000)
;;2.3340001106262207 real 2.2970000000000006 user 0.0 sys
;; ----------------------------------------------------------------
;; destruc (x100)
;;1.9910001754760742 real 2.0 user 0.0 sys
;; ----------------------------------------------------------------
;; diviter (x200000)
;;2.055999994277954 real 2.0470000000000006 user 0.0 sys
;; ----------------------------------------------------------------
;; divrec (x140000)
;;1.4830000400543213 real 1.4529999999999994 user 0.0 sys
;; ----------------------------------------------------------------
;; puzzle (x12)
;;1.0709998607635498 real 1.0779999999999994 user 0.0 sys
;; ----------------------------------------------------------------
;; takl (x35)
;;0.9110000133514404 real 0.907 user 0.0 sys
;; ----------------------------------------------------------------
;; triangl (x1)
;;0.9219999313354492 real 0.9060000000000024 user 0.0 sys
;; ----------------------------------------------------------------
;; ARITHMETIC
;; fft (x200)
;;1.8899998664855957 real 1.8119999999999976 user 0.0 sys
;; ----------------------------------------------------------------
;; fib (x1)
;;1.7780001163482666 real 1.75 user 0.0 sys
;; ----------------------------------------------------------------
;; fibc (x50)
;;1.7349998950958252 real 1.7040000000000006 user 0.0 sys
;; ----------------------------------------------------------------
;; fibfp (x1)
;;8.138999938964844 real 7.780999999999999 user 0.0 sys
;; ----------------------------------------------------------------
;; mbrot (x10)
;;3.375999927520752 real 3.344000000000001 user 0.0 sys
;; ----------------------------------------------------------------
;; nucleic (x1)
;;1.9010000228881836 real 1.8590000000000018 user 0.0 sys
;; ----------------------------------------------------------------
;; pnpoly (x10000)
;;0.7100000381469727 real 0.7029999999999959 user 0.0 sys
;; ----------------------------------------------------------------
;; sum (x1000)
;;0.4719998836517334 real 0.45300000000000296 user 0.0 sys
;; ----------------------------------------------------------------
;; sumfp (x600)
;;1.9199998378753662 real 1.9059999999999988 user 0.0 sys
;; ----------------------------------------------------------------
;; tak (x200)
;;0.7339999675750732 real 0.7349999999999994 user 0.0 sys
;; ----------------------------------------------------------------
;; MISCELLANEOUS
;; conform (x4)
;;0.009999990463256836 real 0.015000000000000568 user 0.0 sys
;; wrong result: ("(b ^ d)" "c" "(a ^ c)" "d" "any" "none")
;; ----------------------------------------------------------------
;; earley (x20)
;;2.930999994277954 real 2.9070000000000036 user 0.0 sys
;; ----------------------------------------------------------------
;; graphs (x15)
;;2.378000020980835 real 2.3429999999999964 user 0.0 sys
;; ----------------------------------------------------------------
;; mazefun (x100)
;;0.8310000896453857 real 0.8290000000000006 user 0.0 sys
;; ----------------------------------------------------------------
;; nqueens (x150)
;;0.6979999542236328 real 0.6869999999999976 user 0.0 sys
;; ----------------------------------------------------------------
;; paraffins (x100)
;;1.2379999160766602 real 1.2340000000000018 user 0.0 sys
;; ----------------------------------------------------------------
;; peval (x20)
;;1.0770001411437988 real 1.0790000000000006 user 0.0 sys
;; ----------------------------------------------------------------
;; ray (x1)
;;3.0359997749328613 real 3.0 user 0.015 sys
;; ----------------------------------------------------------------
;; scheme (x3000)
;;1.5360000133514404 real 1.531000000000006 user 0.0 sys
;; ----------------------------------------------------------------
正直moshより速くなったと言っても問題ない気がしてきた。browseが少し負けてるか。何でだろう?boyerの桁が違うのはmoshはdisplay closureを使ってるので名前付letのループがきついのだろう。GaucheとYpsilonをここに載せないのはあれらは異次元の速さだから。まだしばらく勝てそうにない。
ドキュメントの整備が終わったら0.2.0をリリースしよう。
No comments:
Post a Comment