.NET Framework の使用に関するパフォーマンス規則

.NET Framework の使用カテゴリのパフォーマンス規則では、最適化できる具体的なメソッド、およびパフォーマンスに問題があるときに調査できる一般的な使用パターン (ガベージ コレクションやロックの競合など) が示されています。

DA0001: StringBuilder を使用して連結してください String.Concat(String, String) の呼び出しが、プロファイリング データの大きな割合を占めています。 StringBuilder クラスを使用して、複数のセグメントからの文字列を連結することを検討してください。
DA0005: 頻繁な GC2 のコレクションです 比較的多数の .NET メモリ オブジェクトが、ジェネレーション 2 のガベージ コレクションで回収されています。 ジェネレーション 1 のコレクションで回収されない有効期間の短いオブジェクトが多すぎる場合、メモリ管理コストが簡単に過剰になる可能性があります。
DA0006: 値の型で Equals() をオーバーライドしてください パブリック値型の Equals メソッドまたは等値演算子の呼び出しが、プロファイリング データの大きな割合を占めています。 さらに効率的な方法を実装することを検討してください。
DA0007: 制御フローでの例外の使用を避けてください .NET Framework 例外ハンドラーの多くの部分が、プロファイリング データで呼び出されました。 他の制御フロー ロジックを使用して、スローされる例外の数を減らすことを検討してください。
DA0010: GetHashCode の負荷が高くなっています 型の GetHashCode メソッドの呼び出しがプロファイリング データの大きな割合を占めているか、または GetHashCode メソッドがメモリを割り当てています。 メソッドの複雑さを軽減してください。
DA0011: CompareTo の負荷が高くなっています 型の CompareTo メソッドが高コストであるか、またはメソッドがメモリを割り当てています。 CompareTo メソッドの複雑さを軽減してください。
DA0012: リフレクションが頻繁に実行されています InvokeMemberGetMember などの System.Reflection メソッドの呼び出し、または InvokeMember などの Type メソッドの呼び出しが、プロファイリング データの大きな割合を占めています。 可能な場合は、事前バインディングを使用するこれらのメソッドを、依存アセンブリのメソッドに置き換えることを検討してください。
DA0013: String.Split/String.Substring が頻繁に使用されています String.Split メソッドまたは Substring メソッドの呼び出しが、プロファイリング データの大きな割合を占めています。 文字列内で部分文字列の存在をテストしている場合は、IndexOf または IndexOfAny を使うことを検討してください。
DA0018: 32 ビット アプリケーションがプロセスのマネージ メモリ制限で実行されています プロファイリングの実行中に収集されたシステム データで、.NET Framework のメモリ ヒープが、32 ビット プロセスでマネージ ヒープが到達可能な最大サイズに近づいたことが示されています。 .NET メモリ プロファイル方法を使って再度プロファイリングを行い、アプリケーションによるマネージ リソースの使用を最適化することを検討してください。
DA0021: ジェネレーション 1 のガベージ コレクションが高率です 比較的多数の .NET メモリ オブジェクトが、ジェネレーション 1 のガベージ コレクションで回収されています。 ジェネレーション 0 のコレクションで回収されない有効期間の短いオブジェクトが多すぎる場合、メモリ管理コストが簡単に過剰になる可能性があります。
DA0022: ジェネレーション 2 のガベージ コレクションが高率です 多数の .NET メモリ オブジェクトが、ジェネレーション 2 のガベージ コレクションで回収されています。 ジェネレーション 1 のコレクションで回収されない有効期間の短いオブジェクトが多すぎる場合、メモリ管理コストが簡単に過剰になる可能性があります。 このルールは、ロック競合の割合がルール DA0005 の上限しきい値を超えると発生します。
DA0023: 高い GC CPU 時間 プロファイリングの間に収集されたシステム パフォーマンス データで、ガベージ コレクションに費やされた時間がアプリケーション処理時間全体と比較して大きいことが示されています。
DA0024: 過剰な GC CPU 時間 プロファイリングの間に収集されたシステム パフォーマンス データで、ガベージ コレクションに費やされた時間がアプリケーション処理時間全体と比較して大き過ぎることが示されています。 このルールは、ガベージ コレクションに費やされた時間がルール DA0023 の上限しきい値を超えると発生します。
DA0038: 高率のロック競合 プロファイリング データで収集されたシステム パフォーマンス データが、アプリケーションの実行中に非常に高率のロック競合が発生したことを示しています。 競合の原因を見つけるために、同時実行プロファイル方法を使用して、プロファイリングを再度実行することを検討してください。
DA0039: 非常に高率のロック競合 プロファイリング データで収集されたシステム パフォーマンス データが、アプリケーションの実行中に極端に高率のロック競合が発生したことを示しています。 競合の原因を見つけるために、同時実行プロファイル方法を使用して、プロファイリングを再度実行することを検討してください。 このルールは、ロック競合の割合がルール DA0038 の上限しきい値を超えると発生します。