Listのデフォルトのコンストラクターは、容量が4のリストを初期化し、5番目の要素を追加すると容量が2倍になるといつも思っていました...
私のアプリケーションでは、多くのリスト(各ノードが多くの子を持つことができるツリーのような構造)を作成します。これらのノードの一部には子がありません。アプリケーションは高速でしたが、使用することにしたメモリを少し使用していたためです。容量を指定してこれを1に設定できるコンストラクター。
奇妙なことに、容量1から始めたときのメモリ使用量は、デフォルトのコンストラクタを使用したときよりも約15%高くなっています。倍増は1,2,4になるので、4との適合性が高いためではありません。では、なぜこの余分なメモリ使用量の増加があるのでしょうか。追加のテストとして、容量4から始めようとしました。今回も、メモリ使用量は、指定された容量を使用しない場合よりも15%高くなりました。
これは実際には問題ではありませんが、私が何年も使用してきた非常に単純なデータ構造に、まだ知らなかった追加のロジックが含まれているのが気になります。誰かがこの側面でリストの内部の仕組みについての考えを持っていますか?