streamをfile descriptorに
ファイル I/O ポートの内部表現ですが現状の FILE* をやめて int fd にすべきですね。そうすれば exec などとの相性も大変よろしくなります。 -- ひげぽん 2009-01-06 (火) 14:30:27
http://wiki.monaos.org/pukiwiki.php?Mosh%2F%B3%AB%C8%AF%B4%C4%B6%AD%C0%B0%A4%A8%A4%EB
とあったのでFileBinaryInputPortに手を加えてみている。
ちょっとはりぼて感のぬぐえない改造をほどこしてみた。直している間にstreamでのバッファリングが効かなくなって遅くなるんじゃないかと不安になったことをtwitterでつぶやいていた所、
make bench で前後を比べてみるとか。
http://twitter.com/higepon/status/1099362840
とのこと。
そこで、file descriptor化したr938としてないr937でベンチしてみる。
r937にはSubversion メモにのっていた方法で戻してから。
test | r937 | r938 |
---|---|---|
-5 ./bench/fib.scm | 0.498 | 0.485 |
-5 ./bench/tak.scm | 1.031 | 1.004 |
-5 ./bench/triangl.scm | 1.989 | 1.973 |
-5 ./bench/takl.scm | 0.092 | 0.08 |
./bench/empty.scm | 0.072 | 0.058 |
./bench/load-library.scm | 0.136 | 0.094 |
./bench/clos.scm | 0.465 | 0.521 |
あれ・・・はやくなってないか(clos以外)。いや優位差がないくらいかな。
どちらにしろfile descriptorを使ってもとりあえず遅くはなっていないようだ。
make benchは気軽にできたので速度に影響でそうなことやったあとは試してみるようにしよう。