Array、List、Dictionaryの速度比較
ORM的な何かで取得したIEnumerable<T>
のデータがあったとき、Array、List、Dictionaryへの変換速度と1件取得の速度を比較してみた。
IEnumerable<T> datas;
// 何かデータ取得処理
・・・
var sw = new Stopwatch();
sw.Start();
var array = datas.ToArray();
sw.Stop();
Console.WriteLine("Array変換:{0}", sw.Elapsed);
sw.Reset();
sw.Start();
var list = datas.ToList();
sw.Stop();
Console.WriteLine("List変換:{0}", sw.Elapsed);
sw.Reset();
sw.Start();
var dictionary = datas.ToDictionary(x => x.Id);
sw.Stop();
Console.WriteLine("Dictionary変換:{0}", sw.Elapsed);
// 検索キー取得
var Id = datas.OrderBy(x => Guid.NewGuid()).First().Id;
Console.WriteLine("Id:{0}", Id);
sw.Reset();
sw.Start();
var data1 = array.First(x => x.Id == Id);
sw.Stop();
Console.WriteLine("Array検索:{0}", sw.Elapsed);
sw.Reset();
sw.Start();
var data2 = list.First(x => x.Id == Id);
sw.Stop();
Console.WriteLine("List検索:{0}", sw.Elapsed);
sw.Reset();
sw.Start();
var data3 = dictionary[Id];
sw.Stop();
Console.WriteLine("Dictionary検索:{0}", sw.Elapsed);
①変換速度
回数 | Array | List | Dictionary |
---|---|---|---|
1回目 | 0.0017449 | 0.0016148 | 0.0053250 |
2回目 | 0.0017138 | 0.0015178 | 0.0054479 |
3回目 | 0.0017235 | 0.0016059 | 0.0053376 |
②検索速度
回数 | Array | List | Dictionary |
---|---|---|---|
1回目 | 0.0007101 | 0.0006819 | 0.0000109 |
2回目 | 0.0003431 | 0.0002906 | 0.0000105 |
3回目 | 0.0009737 | 0.0009600 | 0.0000109 |
変換速度はList < Array <<<<< Dictionayだったが、
検索速度はDictionary <<<<<<<<<< List < Arrayだった。
Dictionaryの結果は予想通りだったけど、ArrayとListが意外だった感。
Author And Source
この問題について(Array、List、Dictionaryの速度比較), 我々は、より多くの情報をここで見つけました https://qiita.com/taiga_takahari/items/a6e30a5eba5d9f4735e5著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .