私のコードでは、オブジェクトの大きなコレクションを作成する必要があることがあります。後でアイテムを追加する必要があるかもしれないので、コレクションではなく配列が必要であることに注意してください。大量のアイテムを含むリスト<MyObject>の効率的な作成
効率的な方法は何ですか?
オブジェクトは非常に単純で、デフォルトのパラメータレスコンストラクタで高速に作成できるとしましょう。このような何か:
class MyObject
{
private int a;
public int A
{
get { return a; }
set { a = value; }
}
}
確かに、私はこのような私のコレクションを作成することができます。
List<MyObject> list = new List<MyObject>(knownNumberOfItems);
for (int i = 0; i < knownNumberOfItems; i++)
list.Add(new MyObject());
しかし、おそらく同じことを行うには良い方法はありますか?議論から
概要:
- 参照型のためにこれを行うにはより高速な方法はありません。値の型を使用すると、パフォーマンスが向上する場合があります。
- 新しいアイテムが後で追加されたときに、再割り当ての数を減らすために、最初により多くの領域を割り当てるようにしてください。
要件に合っている場合は、MyObjectを構造体にすることを検討してください。それはいくらかのオーバーヘッドを削ってしまうでしょう – Polity
FYI、Listは配列によって裏付けられています。パフォーマンス上の懸念から、アレイを使用したくないと述べています。配列を配列の代わりに使用しても、リストは順番に配列自体を使用するため、この問題は軽減されません。 –
Dejas
@Dejas私は基本配列の再割り当てについては何もできないと思います。しかし、私はちょうどこれらの再配分を自分でやりたくはありません。 – Bobrovsky