最近速度性能の向上みたいなことばっかりやって、 今月だけで6倍は速くしましたよ。 まあ、元々があんまり速くなかった訳ですが。 んで、更に4倍速くする方法も見付けました。 合計で24倍のスピードアップ。 どうだ参ったかって感じですね。
しかし何か昔から私はこういうことばっかりやっているような気もします。 某研究室でも、そういう仕事やったしねえ。 あれは特に他に手を入れづらい仕事だったから、 他も弄っていいなら、ずっと速くできたんだけど、 それでも10倍は速くしたはずだから、まああれはあれでいいか。
こういう仕事って案外(私には)面白くって、 一つには速い方がストレス溜らないからってのもあるでしょう。 人間は自分が圧倒的に遅いのは知らんふりして、 コンピュータには無限の速度を求めますから。
それ以上に、謎解きの面白さなんでしょうね。 ある意味、科学実験にも似ています。 速度が上がれば何してもいいってわけではなくて、 ちゃんと動いているものを壊さないようにやらなきゃいけないし、 そう勝手に仕様を変更できるわけではありません。 だから、いかに互換性を保持しつつ、 最大限の速度を引き出すかって問題なわけで、 しかも、やってみないと分からないことがたくさんあります。 ある程度以上システムが複雑であると、 実際にどのぐらい速くなるか、あるいは、ほとんど効果がないか、 はたまた、逆に遅くなったりしないか、 試してみないとよく分からんことが多いのです。
プロファイラやベンチマークが有用なのは間違いありませんが、 与えられた条件がどういうものなのか、 何を仮定できて、何は出来ないのか、 しっかり洞察することが大切です。 一般的状況ではどうしようもなくても、 特定条件下ではいろいろやれたりするのは、 アルゴリズムを勉強された方ならよく分かるでしょう。 現実世界では誰も「君、これはこう仮定できるんだよ」なんて教えてくれはしませんから、 思考する能力は大事です。 何に対しても言えることですが。
ところで、 私がやっている中でも、さっぱり速度に気を配らないものもあって、 代表格はやっぱりGRUBです。 少なくともCPUの速度に関しては、はなっから無視してますからね。 CPUがボトルネックになるような複雑なことを何もしないですから。
ふと思ったのは、 実は速度に気を遣わない方がどうかしているのかもしれません。 だって、一昔前まではコンピュータは決して十分に速いとは言えなかったでしょう。 あの頃のプログラマは大なり小なり速度を意識していたように思います。 最近、富豪的プログラミングだか何だか知りませんが、 こういうところに神経を伸ばす必要がなくなってきたんですねえ。 いや、素晴らしいことだと思いますけどね。 やっと人間がやりたいと思ったことだけ書けばいいようになってきたんですから。 まあ、まだそのレベルには足りませんが。 ディスクI/OとTCPスタックの処理がもうちっと速くなってくれないと、 完全に無視できるようになるのはまだまだ先のことでしょうね。
ちっとも見てませんでしたが、 jun0さんが言及しておられた のを見て、 少し眺めてみました。 今年はLSM行きません(行けません)でしたから、 あんまりNealやMarcusが何をしゃべったのか分かってませんでした。 参加したVincentに尋ねてはみたものの、 何か曖昧でさっぱり要領が掴めなかったり。
あいかわらずMarcusはまめだなあ。 同じスライドを使い回さずに、ちゃんと新しいのを作っているし。 偉いよ、ほんと。 それに比べてNealは手抜きだな。 前も同じのを見た気がするじょ。 もうちょっとちゃんとやれと、とっちめてやるべきか。
しかし、Hurd/L4もそうだが、 Hurdの問題は、口を動かす奴ばっかりで、 手を動かす奴がほとんどいないってことです。 前からアカデミックな色が無きにしもあらずって感じだったけど、 Hurd/L4はほとんどどっかの無意味な大学研究OSプロジェクトと化しているのでは。 これが本当に研究プロジェクトなら文句はないけど、 GNUがvaporwareになっちゃいかんのだよ。 最近は私自身が手を動かしていないから、 連中の前でひとくさり垂れるのは控えるようにしているけれど、 それでも相当に気に入らないですね。 誰かGRUBを代わってくれたら、今すぐでも何とかしてやるところなんですが。