共用方式為


.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:大量的反射

System.Reflection 方法 (例如 InvokeMemberGetMember) 或 Type 方法 (例如 InvokeMember) 的呼叫在程式碼剖析資料中佔有很高的比例。 請盡可能考慮用相依組件之方法的早期繫結來取代這些方法。

DA0013:String.Split 或 String.Substring 的用量高

String.SplitSubstring 方法的呼叫在程式碼剖析資料中佔有很高的比例。 如果您要測試字串中是否存在子字串,請考慮使用 IndexOfIndexOfAny

DA0018:以處理序 Managed 記憶體限制執行的 32 位元應用程式

在執行程式碼剖析期間所收集的系統資料指出,.NET Framework 記憶體堆積接近 32 位元處理序內允許的 Managed 堆積大小上限。請考慮使用 .NET 記憶體程式碼剖析方法重新進行程式碼剖析,並且最佳化應用程式對 Managed 資源的使用。

DA0021:高比率的 Gen 1 記憶體回收

相當大量的 .NET 記憶體物件正在層代 1 記憶體回收中回收。如果太多存留短暫的物件在層代 0 記憶體回收中未被回收,記憶體管理成本可能很容易變得過高。

DA0022:高比率的 Gen 2 記憶體回收

大量 .NET 記憶體物件正在層代 2 記憶體回收中回收。如果太多存留短暫的物件在層代 1 記憶體回收中未被回收,記憶體管理成本可能很容易變得過高。當爭用鎖定的比率超過規則 DA0005 的臨界值上限時,就會引發此規則。

DA0023:高 GC CPU 時間

程式碼剖析期間收集的系統效能資料指出,相較於應用程式處理總時間,記憶體回收所花費的時間量相當高。

DA0024:過多 GC CPU 時間

程式碼剖析期間收集的系統效能資料指出,相較於應用程式處理總時間,記憶體回收所花費的時間量過高。當記憶體回收所花費的時間量超過規則 DA0023 的臨界值上限時,就會引發此規則。

DA0038:鎖定爭用的比率很高

隨程式碼剖析資料一起收集的系統效能資料指出,在應用程式執行期間發生相當高比率的鎖定爭用。請考慮使用並行程式碼剖析方法重新進行程式碼剖析,找出爭用原因。

DA0039:鎖定爭用的比率非常高

隨程式碼剖析資料一起收集的系統效能資料指出,在應用程式執行期間發生比率過高的鎖定爭用。請考慮使用並行程式碼剖析方法重新進行程式碼剖析,找出爭用原因。當爭用鎖定的比率超過規則 DA0038 的臨界值上限時,就會引發此規則。