-1

List<T>.AddRange(IEnumerable<T>)よりも早く聞こえ ましたnew List<T>(IEnumerable<T>)。リフレクターを調べた後、テスト アプリケーションを作成した後、広告の理由がわかりませんでした。確かに、それがより高速であることがわかりました。

誰かが理由を知っていますか?

4

1 に答える 1

1

申し訳ありませんが、あなたの仮定を確認できません。AddRange は、コンストラクタ バリアントよりも常に低速でした。

私はそれのためのいくつかのテストコードを作りました:

a)var list = new List<T>(enumerable);

よりも速い

b)var list = new List<T>(); list.AddRange(enumerable);

異なる IEnumerables でテスト済み

リスト: new: 32ms addrange: 47ms

LinkedList: 新規: 58ms addrange: 99ms

HashSet: new: 56ms addrange: 98ms

キュー: 新規: 271ms addrange: 516ms

于 2012-05-21T09:42:26.390 に答える