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

メモ

参考