インサイド 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

いろいろ言い方を変えてみます。

  • 分析対象となるプログラムの最適化の甘さを数値化によって的確に指摘してくれます。
  • 分析対象となるプログラムに携わったプログラマの最適化の駄目さを数値化によって的確に指摘してくれます。

他人が書いたプログラムを分析するときも、自分のプログラムを分析するのと同じようにボトルネックを特定できますね。

Borland製品にIDE的に対応していないことをのぞけば、すばらしいです。

分析によってわかったこと

細かいところはもっとありましたが、省きます。

きっかけ

プログラマのダイエット・エピソード2

  • 鉄則1. 計測ツールを使え
  • 鉄則2. やたらに直すな(主要因を見極めてから直せ)

*1:ボトルネックを特定しないまま「このへんだろう」という予測でチューニングを施し、それが外れていた場合大きなタイムロスとなる

*2:しかも、チューニングはプログラマの腕の見せ所のため、すごくガッカリする。

*3:「本当にそこがボトルネックなのか?」という論争も避けられるかもしれません。

Quake IIIのソースコードが公開されました

うわー、出た!
「リリースする」って言ってから、実際にするまでが早すぎる!
やったぜ、John Carmack。いかすぜ、はてなRSS

リリース情報は、DevMaster.netのこの記事から
公式サイトのTechnology Downloadsからダウンロードできます。

*1:id softwareの開発環境も、Visual Studio 7系になったようです。