generic.listが配列より遅いのはなぜですか?
1515 次
2 に答える
5
ジェネリック リストは配列よりもわずかに遅くなりますが、ほとんどの場合はそうではありません。ほとんどの場合、ルックアップが少し複雑になることに関係しています。リストは「フードの下で」配列を使用すると言われていますが、配列と同じように隣接するメモリにノードを保持することは保証されていません。
ただし、2005 年にいくつかのベンチマークを見たことがありますが (現在はリンクを見つけることができません)、違いは非常に小さいものです。
また、リストには配列よりも多くの重要な利点があります。主に、項目の追加または削除が簡単なことです。必要な項目の数がわからない場合や、その数がいつ変化するかがわからない場合は、リストを使用する方がはるかに簡単です。そのような場合 (そして正直なところ、ほとんどの場合)、おそらく配列を使用するべきではありません。
于 2008-11-06T17:27:05.320 に答える
3
読み取りパフォーマンスに関しては、次の 2 つの要因があります。
- 追加の逆参照 (つまり、にはフィールド
List<T>が含まれており、それを逆参照する必要があります)T[] T[]ループ中の境界チェックを排除するなど、存在する一部のコンパイラ最適化を使用できません
ただし、 a に追加する方がはるかに簡単ですList<T>。特に、余分なスペースが保持されるためです。つまり、単一の要素を追加するためだけに配列全体のサイズを変更/ブリットする必要はありません。
于 2008-11-06T22:01:28.323 に答える