まあそんなことより、普通に負けててショックなんですが
yt@THALES /d/Programming/tests/grass $ time let/let.byte.exe quine2.grass > z2 real 0m1.712s user 0m0.010s sys 0m0.010s yt@THALES /d/Programming/tests/grass $ time let/let.opt.exe quine2.grass > z1 real 0m0.151s user 0m0.020s sys 0m0.000s
↑Glid↓私の
yt@THALES /d/Programming/tests/grass $ time grass.byte.exe quine2.grass > z3 real 0m2.003s user 0m0.010s sys 0m0.010s yt@THALES /d/Programming/tests/grass $ time grass.opt.exe quine2.grass > z4 real 0m0.171s user 0m0.010s sys 0m0.010s
パーサを見直した。
yt@THALES /d/Programming/tests/grass $ time grass.byte.exe quine2.grass > z5 real 0m1.982s user 0m0.010s sys 0m0.010s yt@THALES /d/Programming/tests/grass $ time grass.opt.exe quine2.grass > z6 real 0m0.161s user 0m0.020s sys 0m0.000s
関数適用のときスタックを辿るのを関数と引数まとめてやってしまうようにした。
yt@THALES /d/Programming/tests/grass $ time grass.byte.exe quine2.grass > z5 real 0m1.562s user 0m0.020s sys 0m0.000s yt@THALES /d/Programming/tests/grass $ time grass.opt.exe quine2.grass > z6 real 0m0.171s user 0m0.020s sys 0m0.000s
関数を作るところでfunで書いていた部分を部分適用。
yt@THALES /d/Programming/tests/grass $ time grass.byte.exe quine2.grass > z5 real 0m1.532s user 0m0.020s sys 0m0.000s yt@THALES /d/Programming/tests/grass $ time grass.opt.exe quine2.grass > z6 real 0m0.160s user 0m0.020s sys 0m0.000s
バイトコードはいいとして……opt版が速くならない……。(小手先の最適化しかしてないくせにどの口が)