メモリ
速度
全般
- コレクションに大量のアイテムを追加する場合、Add() よりも AddRange() を利用する。
リフレクション
- リフレクションは重い。
- リフレクションを多用する場合、リフレクションで取得した情報をキャッシュする。(Dictionary等を使用してキャッシュ)
ボクシング
- ボクシングは重い。
インタフェース
- 仮想メソッドの呼び出しよりも、インタフェースのメソッドを呼び出す方が遅い。(僅か)
例外
- 例外は重い。
- 正常系において、例外を発生させるようなことはしない。
文字列
- 文字列の結合などの操作は、System.Stringよりも、System.Text.StringBuilderを利用する。
GUIのレイアウト
- SuspendLayout()、ResumeLayout()を利用して、再レイアウトのタイミングを制御する。
- BeginUpdate()、EndUpdate() が用意されているコントロールは、それらを利用する。
- ISupportInitializeインタフェースを実装しているコントロールなら、BeginInit()、EndInit()を利用する。;
- コントロールに子コントロールを追加する場合、子コントロールのプロパティ「Parent」に親となるコントロールを設定する。親コントロールのControls.Add() を利用するコードよりも高速になる。
XML
- XmlReaderあるいはXPathNavigatorを使用することで高速にXMLを読み込むことができる。
- http://msdn.microsoft.com/ja-jp/library/bb299124.aspx
メモ
- ICorProfilerInfo
- http://www.eqatec.com/tools/profiler/
参考
- http://msdn.microsoft.com/ja-jp/library/ms998551.aspx
- http://msdn.microsoft.com/ja-jp/magazine/cc163791.aspx
- http://blogs.msdn.com/b/vancem/archive/2006/03/13/550529.aspx
- http://d.hatena.ne.jp/JiaLu/touch/20090406/1238992778
- http://www.amazon.co.jp/dp/4839930422
- http://www.amazon.co.jp/dp/4798119539
- http://www.amazon.co.jp/dp/4798119547