watesが書いたよ
ハイスペックマシンを無駄なく使う。
by わてす 2008-02-05 20:41
はじめましてこんばんは。
いきなり本題です。仕事で新ハードに触れる事が多くなってきました。特に C2D は速いです。 PS3 とか Xbox360 とかも速いらしいです。世間一般ではハイスペックな環境での開発は難しいとされています。開発費が 10 倍になるとか、開発期間が数倍に伸びるとか、そんな感じでネガティブなイメージが多いようです。当然ハードウェアスレッド数が多いのでスレッド数を増やして並列化し、さらにはスレッド内でも SIMD を使って並列演算せなあかんです。想像しただけでもしんどい作業です。マジで。個人的には並列処理とか分散処理ってのはネットワーク関係でおなかいっぱいです。 SIMD なんぞ MMX ですらだいぶ苦労したへたれです。
しかし時代はそんな開発者の悩みとはおかまいなしに進化していきます。つい前までは Y2K こと 2000 年問題だとか騒がれてる次期に CPU は 1Ghz を超えました。その前は、夜な夜なテレホにつないで、であぶろに潜ったりしてました。「ぺんちあむはえー」とか、学校で誰にも理解されなくても言うてた気がします。確実にムーアの法則通り滞りなく進化してってます。 PC のスペックは当時に比べれば数倍にも、数十倍にもなってます。
次にソフトウェアの開発状況をみてみます。自分の環境の初期は PC98-DOS に TurboC++ だったような気がします。インストールや起動だけでも結構手こずりました。 CPU は sx286 かなんかの 25Mhz ぐらいで動作するモノだった気がします。遅いとも速いとも気にしてませんでした。でもたぶん動作が遅かったのでネイティブコード以外ではまともに動かず、ちゃんとしたゲームではすごく人力で最適化してたという話をききます。マルチコアやら SIMD ではないにしろ最適化してたわけです。↑↑の話と似てます。
今は VS2005.NET をメインに開発してます。インストールや起動に手こずることはありませんでした。ビルド時間もコード量に比例して CPU も速くなってるんで体感では昔と同じぐらいで終わります。コードを書くのは人間なので昔とおんなじです。ライブラリが多く昔に比べて開発はとても幅が広がり、楽にもなりました。 CPU が速いんで当然最適化なんぞしなくてもコンパイラがやってくれるだけで十分速くなります。見た目も当然よくなりました。 CUI から GUI になっただけで抜群に操作性がよくなってます。思いついたらちょっとポチポチとボタンをクリックしてちょっとカタカタとコードを書けばすぐ動いてくれます。なにも手間のかかる C++ で書かなくても、るびーやらじゃばやらいっぱいあるので、実行速度が遅いとかそんなこと気にせずにもいられます。すげー。
さて。最初の話と矛盾してきました。「スペックが良くなる=開発が困難になる」という話は自分には関係なかったようです。かといって自分の使い方に無駄が多いかというと、 CPU 利用率は常にそこそこ高く、 24 インチモニタを 2 台使ってるにもかかわらず画面はいろんな情報で埋まってます。 CPU が Sleep してるわけでもなく、画面にスキマがあるわけでもないので、無駄があるようには見えません。開発が困難になってるわけでもなく、むしろ良好になりました。
処理を並列化させて、バリバリ最適化して、時間を大量にかけて、ハードの性能を見える形で出しきるのには無駄が無く、とても響きが良いです。そして、あり余るリソースを大量に消費して、すこしコードを書いて、それなりの動作をするのも、ハードが空回りしてるわけじゃないので無駄が無いです。
無駄なんてもともと無かったわけで、特に難しいことをしてもしなくても、無駄なくマシンを駆れるわけです。
つづく。(かもしれない)