2004-06-24
河馬は赤い血を流す
以前再帰関数はループに変換でき、ループにしたほうが一般的に速いと書きましたが、この際当然ながらアルゴリズム自体をループに適したものにしなければ速くなることはないでしょう。
件のソースでは二行二列まで展開した部分で、結果的に同じものを複数回計算しています*1。これを解消しようとすれば、必然的にループの形態をとることになるはずです。
行列式の計算以外でも、例えば階乗の計算やフィボナッチの計算などでは、その定義が再帰的であるが故に再帰関数として実装するととてつもなく遅いプログラムが出来上がります。これらも逆方向(数字の小さい方)から計算するなら、ループにするのが自然です。
表題は、言っていることは間違ってないんだけど、言いたいこととは微妙にずれてんじゃないの?という様子です*2。いや自戒をこめて。
おまけ
(ここにあったおまけのソースは消失してしまいました)
Pentium4 1.9GHz+Borland C++ 5.5で3.5秒前後。ただ改変する前も7秒程度で終了していた。さらに、事前メモリ確保バージョンを試したところ4.5秒程度だったので、ただ単にgccのmallocの実装がタコってるだけのような気もしてきた。
力いっぱい焚きつけろ
土間土間(居酒屋)によると大トロの刺身はtsuna sashimiなのだそうだ。で、ビントロまぐろの刺身はfatty meat tsuna sashimiらしい。昨日の二次会でメニューを見ながら、この英語表記で二人で笑っていたのだけど、そのときに隣のカップルの男の方が、女の子に「焚きつけるって言葉知ってる?」と言い出した。
曰く、「ほら焚き火とかをさ、焚きつけるって言うんだって」。この時点ではそれが転じて云々というのかと思っていたのだけど、そうではなくて元の意味を指して「知らなかった」のだそうだ。隣ではtsuna sashimiの妙味がわかる女の子がいいなどという馬鹿話をしていたのだけど、さすがに隣には勝てないなぁと思った、ただそれだけの話。
tsuna sashimiで笑っている男と、焚きつけるを知らなかった男とだったら、どっちがましでしょうか。
2008-06-24
2009-06-24
サーバーが死んだ
(ほかの日記からのコピーです)
昨日の猛暑のせいか、サーバーマシンがお亡くなりになってしまった。電源を入れ直してもHDDの認識でつまづいている様子。そこをクリアしても、システムがブートしない。HDDを抜き出して他のシステムに接続したところちゃんと立ち上がったので、M/Bか電源周りがいかれたんじゃないかと予測。ちょうど三年経過したことになるのだけど、常時通電だとこんなもんなのかな。すこし温度対策も考えた方がいいのかもしれない。
micro-ITXのM/Bやらを眺めていたのだけど、オンボードCPUのベアボーンを購入した方が安そうということで実売が1万円をきっているXC Cube LE201を選択。即日発送のところで注文した。メモリとHDDはいずれも手持ちのものを使用することに。HDDはATAからSATAになるので何らかの方法でコピーする必要がある。(つづく)