たらいまわし大会
たらいまわしまくってみた。
\ | (tarai 12 6 0) | (ytarai 12 6 0) | ytarai/tarai |
---|---|---|---|
gcc -O3 -fomit-frame-pointer | 0.06 | 0.12 | 2. |
g++ TMP | 0.00 | x | x |
gforth | 1.18 | x | x |
pforth | 4.57 | x | x |
runhugs | 0.24 | x | x |
ghc | 0.00 | x | x |
ocaml | 1.40 | x | x |
perl | 18.08 | x | x |
python | 7.62 | 45.94 | 6.0 |
ruby | 17.32 | x | x |
guile | 9.36 | 30.11 | 3.2 |
gosh | 1.54 | 26.34 | 17. |
ypsilon | 0.97 | 12.98 | 13. |
scm -f | 6.80 | 33.93 | 5.0 |
elk -l | 35.25 | 115.73 | 3.3 |
mzscheme -r | 2.15 | 4.91 | 2.3 |
stalin -Ob -Om -On -Or -Ot -k -architecture IA32 -copt -O3 -copt -fomit-frame-pointer -copt -Wall -copt -freg-struct-return | 0.04 | 0.26 | 6. |
csc -O3 -Ob | 0.09 | 1.06 | 11 |
bigloo -unsafe -fno-reflection -Obench -O6 -copt -O3 -copt -fomit-frame-pointer -copt -freg-struct-return | 0.05 | 3.29 | 66 |
gsc | 0.42 | 3.85 | 9.2 |
通常のたらいまわし。
g++ TMP, ghc >>(コンパイル時計算の壁)>>gcc, stalin, bigloo>>(ネイティブの壁)>>gforth, ocaml, ypsilon, gosh, mzscheme>>(LLの壁)>>perl, python, guile, scm>>(よく分からない壁)>>ruby, elk
インタプリタ同士でも結構な差が出てしまう。
Y-Combinator
処理系によって速度比が大きく異なるのは何が原因なのだろう。どのような処理を高速化するかというバランスの違いなのかな。