List<T>.AddRange(IEnumerable<T>)
よりも早く聞こえ ましたnew List<T>(IEnumerable<T>)
。リフレクターを調べた後、テスト アプリケーションを作成した後、広告の理由がわかりませんでした。確かに、それがより高速であることがわかりました。
誰かが理由を知っていますか?
List<T>.AddRange(IEnumerable<T>)
よりも早く聞こえ ましたnew List<T>(IEnumerable<T>)
。リフレクターを調べた後、テスト アプリケーションを作成した後、広告の理由がわかりませんでした。確かに、それがより高速であることがわかりました。
誰かが理由を知っていますか?
申し訳ありませんが、あなたの仮定を確認できません。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