CSharp パフォーマンス
Last-modified: 2011-07-15 (金) 00:39:56
メモリ
速度
全般
- コレクションに大量のアイテムを追加する場合、Add() よりも AddRange() を利用する。
リフレクション
- リフレクションは重い。
- リフレクションを多用する場合、リフレクションで取得した情報をキャッシュする。(Dictionary等を使用してキャッシュ)
ボクシング
インタフェース
- 仮想メソッドの呼び出しよりも、インタフェースのメソッドを呼び出す方が遅い。(僅か)
例外
- 例外は重い。
- 正常系において、例外を発生させるようなことはしない。
文字列
- 文字列の結合などの操作は、System.Stringよりも、System.Text.StringBuilderを利用する。
GUIのレイアウト
- SuspendLayout()、ResumeLayout()を利用して、再レイアウトのタイミングを制御する。
- BeginUpdate()、EndUpdate() が用意されているコントロールは、それらを利用する。
- ISupportInitializeインタフェースを実装しているコントロールなら、BeginInit()、EndInit()を利用する。;
- コントロールに子コントロールを追加する場合、子コントロールのプロパティ「Parent」に親となるコントロールを設定する。親コントロールのControls.Add() を利用するコードよりも高速になる。
XML
メモ
参考