この記事では、長さ 0 の配列割り当てのパフォーマンスに関する分析情報について説明します。
原因
.NET で長さ 0 の配列を割り当てると、不要なメモリ割り当てにつながる可能性があります。 これらの割り当ては小さいものの、特に高パフォーマンスまたはメモリに制約のあるアプリケーションでは、蓄積され、パフォーマンスの問題を引き起こす可能性があります。
パフォーマンス分析情報の説明
長さ 0 の配列が割り当てられると、メモリ割り当てが不要になります。 新しい配列を作成する代わりに、Array.Empty<T>()
メソッドによって提供される静的に割り当てられた空の配列インスタンスを使用する方が効率的です。 このメソッドは、指定した型のキャッシュされた空の配列を返し、新しい割り当てのオーバーヘッドを回避します。
警告を調査する方法
[調査] リンクをクリックして、割り当てられた長さ 0 の配列を示す 割り当て ビューに移動します。 割り当てをダブルクリックすると、割り当てが行われているコード パスが表示されます。
Array.Empty<T>()
によって提供される静的に割り当てられた空の配列インスタンスを使用して、これらの割り当てを減らすことを検討してください。
空の配列の割り当てとその解決の例を次に示します。
違反:
class Example
{
public void Method()
{
var array = new int[0];
}
}
解決:
class Example
{
public void Method()
{
var array = Array.Empty<int>();
}
}
その他のリソース
長さ 0 の配列割り当ての回避とその他のパフォーマンスのベスト プラクティスの詳細については、次のリソースを参照してください。
CA1825: 長さ 0 の配列割り当てを回避する (コード分析)
これらのガイドラインに従うことで、アプリケーションがパフォーマンスのために最適化され、不要なメモリ オーバーヘッドを回避できます。