言語ゲーム

とあるエンジニアが嘘ばかり書く日記

Twitter: @propella

Squeak のファイルストリームはすごく遅い

と、メモ。普通考えたら例えば数メガのファイルがある場合、一度に読み込んで何かするよりもバッファを使って行単位程度で処理をするほうが画期的に速いという常識が僕にはあった。ところが Squeak でこれをやるとメチャクチャ遅いことが判明。同じストリームを使うにもファイルストリームを直接使わず、一度文字列を作ってからメモリ内にストリームを作り直す方が5倍くらい速い。なぜだ! 昔と違ってメモリが多いからなのかな?

で、ソースを見ると next の際に一文字ずつプリミティブにアクセスするのだが、こういう物なのかな? じゃあ、バッファは何の為にあるんだろう。僕はファイルストリームというと、Perl のファイルハンドルのように、適当にバッファしてくれるのだと思っていたけど、実は違うのだろうか? うーん面白い。