インサイド Microsoft Windows 第4版 上
買ってしまいました。
id:softetherさんがhttp://d.hatena.ne.jp/softether/20050809で書いていた内容を見て欲しくなってしまったからです。
僕が知りたかったのは、スレッドの切り替えがどのように行われるのか、ということでした。
本では第6章の内容に当たるところですね。
本を買う前にネットで少し調べたところ、このへんが参考になりました。かなり詳しく書かれています。
動作理解のために、Windowsの仕組みを知り尽くしたSysinternalsのツールがこれでもか、というほど出てきます。スレッド、プロセス周りだと、Process Explorerが大活躍します。Process Explorerはクリック出来る全てをクリックしたことがなかったので、本の紹介によって「こんな機能もあるんだなぁ」と感じました。
この本をちゃんと読んでいけば、Dave Cutlerに少しは近づけるかもしれません。
DevPartner Profiler Community Editionは性能分析に大いに役立った
結果
C#とC++とDelphiが混在するとあるプログラムがあったのですが、それの性能分析および性能改善に大いに役立ちました。CPU負荷が常に100%前後だったプログラムを、80%前後に落とすことが出来ました。
Dev Partner Profiler Community Editionで分かること
- メソッドが全体の処理の何%を占めているのか
- メソッドが何回呼び出されているか
- メソッドの中の特定の行がメソッドの何%を占めているか
- メソッドの中の特定の行が何回呼び出されているか
ということを調べることが出来るため、ボトルネックを予測ではなく、特定することが出来ます。性能改善において、ボトルネックの特定はプログラムのチューニングよりも優先度が高い重要な作業です*1*2。ボトルネックさえ分かれば、自分で調べたり、質問掲示板で質問したり出来ます*3。
いろいろ言い方を変えてみます。
- 分析対象となるプログラムの最適化の甘さを数値化によって的確に指摘してくれます。
- 分析対象となるプログラムに携わったプログラマの最適化の駄目さを数値化によって的確に指摘してくれます。
他人が書いたプログラムを分析するときも、自分のプログラムを分析するのと同じようにボトルネックを特定できますね。
分析によってわかったこと
- ZLibで圧縮したバッファからの読み込み
- 小さいデータを何度も繰り返し読み込みをする場合、一括で読み込んだ方が速い
- 描画は基本的に遅い
- C#のメモリ割り当ては思っていたより速い
細かいところはもっとありましたが、省きます。
Quake IIIのソースコードが公開されました
うわー、出た!
「リリースする」って言ってから、実際にするまでが早すぎる!
やったぜ、John Carmack。いかすぜ、はてなRSS。
リリース情報は、DevMaster.netのこの記事から。
公式サイトのTechnology Downloadsからダウンロードできます。
- ソースコードはzipで5MB。
- 相変わらずC。
- ファイル数1409。
- ディレクトリ66個。
- Windows+Visual Studioのソリューションつき。*1
- Celeron 2.2GHzで二分くらいでビルド出来る。
*1:id softwareの開発環境も、Visual Studio 7系になったようです。