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