VMってすごいんだなあ!と言いたかったのだけれども。

ソースプログラムを適当にASTっぽくしたあと、それを解釈実行するように書いたBrainfuckのインタプリタと、VMっぽく書いたのを比較して「VMはやいカッコイイ!」と言うつもりで、ごにょごにょプログラム書いてた。適当に書き終えた。

% gcc bfi_ast.c -o bfi_ast
% gcc bfi_vm.c -o bfi_vm
% time (repeat 10 ./bfi_ast quine2.b>/dev/null)
1.164 user 0.032 system 1.197 total
% time (repeat 10 ./bfi_vm quine2.b >/dev/null )
2.688 user 0.012 system 2.708 total

……おや。
うーん。書き方がいいかげん過ぎた。っていうかそもそもどっちもASTでもVMでもねーかんじ。あとBFじゃ構造が単純だからTree言っても読むの速いから、VMとやらの効率調べるにも限界があるような。もうちょとまともな構造持った言語の処理系で試さにゃ。適当にプログラム書いてわかったつもりになるのやめて、ちゃんと調べなきゃ駄目か。

なんか最近BF処理系しか書いてない。

VMぽいコード改良

なんか考えてみればアレだなあ、とか思ってた部分を変えたらだいぶ速くなった。そもそもまともなコード書ける人じゃないと、「ほげほげな手法」と「ふがふがな手法」の速度比較とか、なかなかできないということがわかった。

% gcc bfi_vm.c -o bfi_vm
% time (repeat 10 ./bfi_vm quine2.b >/dev/null)
2.052 user 0.028 system 2.084 total

test