2017-08-10 4 views
0

私たちはいくつかの予想最大サイズを知っているとき、私の.NETコレクションの一部の初期サイズを設定しようとして始めました。私たちは、コレクションに後でこのコレクションに項目の追加を開始した場合には、これらの新しいアイテムに合わせてサイズが変更されます私は、.NETコレクションの初期サイズを設定し、この初期サイズOVERいくつかの項目を追加した場合、どのようにコレクションは次のサイズ変更を決定していますか?

に、静的データの事前キャッシュなどを考えてみてください。どのようにそれは次のリサイズがどうなるかを判断しますか?私は、デフォルトのロジックを使用し、初期サイズを設定しないと、プリコードされたロジックに基づいてサイズが変更されると考えました。これで最初のサイズが設定されました。

は、それが単純化され、それがcurrent size + 10%か何かのようないくつかの数学の式ですか?

答えて

1

List <T>の実装では、アルゴリズムはサイズを4で開始し、サイズに達すると倍にします。ベストプラクティスは、構築時にサイズを一覧<T>を割り当てることです。サイズを知っていれば、サイズとメモリを事前に割り当てる方が効率的です。ですから、次のサイズの割り当ては、二重になることを示唆しているhttp://referencesource.microsoft.com/#mscorlib/system/collections/generic/list.cs

+0

を参照してください?だから、もし私が..10万のサイズをしたら、10,001のアイテムを追加したいとき、それは20,000に倍増するでしょうか? –

+0

はい。 List.Addの動作を見てください:http://referencesource.microsoft.com/#mscorlib/system/collections/generic/list.cs,9cc11588bffd57c1 –

+0

@ Pure.Krome - はい、サイズを初期化するのはそうです重要(可能であれば)。 –

関連する問題