0

私は最高のパフォーマンスを得たいと思っており、配列はリストよりも高速であることを知っていますが、配列ではカウンター用の変数を作成する必要があり、サイズを使用.Countまたは検索する必要があるかもしれないので、リストを使用する方がよいでしょうか? .Length以下に例を示します。

例 1:

foreach (var item in items)
    ItemCollection.Add(item);

例 2:

int i = 0;

foreach (var item in items)
{
    ItemCollection[i] = item;
    i++;
}

例 3:

for (int i = 0; i < items.Count; i++)
    ItemCollection[i] = item;
4

3 に答える 3

4

配列/リストのサイズを動的に変更しようとしているように見えるため、例1が最良のオプションです。

例 2 はばかげています。

また、配列を拡張したい場合は、例 3 がややこしくなります。私の最初のポイントを参照してください

3 番目の例で注意すべき点は、for ループにあります。

 for (int i = 0; i < items.Count; i++)

これにより、アイテムが再評価されます。反復ごとにカウントされるため、これを for ループの外に移動してマイクロ最適化できます。

var length = items.Count
for (int i = 0; i < length; i++)
于 2013-08-01T20:44:58.320 に答える
3

リストのパフォーマンスは、配列のパフォーマンスとほぼ同じです。追加するアイテムの正確な数がわかっている場合は、正確な要素数のリストを作成して での再割り当てを回避することにより、潜在的なメモリ オーバーヘッドを排除することもできますAdd

// Reserve the required number of spots in the list
var ItemCollection = new List<ItemType>(items.Count);
foreach (var item in items)
    // Add is not going to cause reallocation,
    // because we reserved enough space ahead of time
    ItemCollection.Add(item);

ほとんどの場合、これは時期尚早のマイクロ最適化であることが判明します。

于 2013-08-01T20:46:21.630 に答える