迎撃。フランスだもんなあ。フランスですよ。 気をつけて行ってきてください。
今回は、かずひこさんの壮大にして邪なる計画が明らかになった。 われわれはいかにしてこの強大な力に抗えばよいのであろうか。
akr さんから net/http が遅ぇー、 とのお達しがあったので手抜きコミット。 とりあえずバッファサイズを 1KB → 16KB にしてみた。 なんで select やめたのか調べて、問題なさそうならselect に戻すかな。
モテへの道:最初の飲み会でプロポーズしてはいけない。
(11:56)
リファレンスマニュアル計画。 @param とかの仕様を決めたまま実装してなかったので サクッと実装しますか、と思ったのだが、 refe s i とかやると無限ループかよ、 ってほど時間がかかることに気付いてしまった。
s で始まるクラスはすごい多いし、 i は Object のメソッドにひっかかるので、 組み合わせでものすごいたくさんのメソッドにマッチする。 で、そのものすごいたくさんのメソッドを 全部ロードして線型マッチするので遅い、 ということらしい。どちらかと言えば特にロードが遅い。 新 ReFe では、とにかくロードするエントリ数を押さえることが勝利への鍵である。
これで現状見付かっている最悪のケースでこのくらいまで抑えた。
~/c/bitclust % time refe2 -d db.big s i >/dev/null refe2 -d db.big s i > /dev/null 0.24s user 0.05s system 98% cpu0.290 total
普通はもっと候補が少ないので、もうちょい速い。
~/c/bitclust % time refe2 -d db.big arr map >/dev/null refe2 -d db.big arr map > /dev/null 0.13s user 0.05s system 97% cpu0.181 total
この速度はかなり限界っぽいよ。
(02:54)
http://doc.loveruby.net/refm/api/view/class/Array
全体的に見ためを変えて、一覧ページでは要約だけ出すようにしてみた。
継承したメソッドもいちおう表示してはみたけど、 private メソッドを削ってないせいでエントリが無駄に多い。 system とか出てるし。 コードを改善するまでは名前だけにしておこう。
……というか、同じクラスのメソッドまで出てるなこれ。 なんでだ。
Object のメソッドがえんえん継承されるのも微妙に不便だなあ。 しかしなければないで困るような気もする。
クラスごとにまとめるかなあ。
名前をキーにして継承したメソッドを 全部同列に並べるオプションも欲しいところだ。
Copyright (c) 2002-2007 青木峰郎 / Minero Aoki. All rights reserved.
このエントリを読んだ人は、私が最初の飲み会でプロポーズしたと誤解しそうじゃないですか! めっそうもない!
言われてみるとそう見えなくもない (笑)。順番変えました。