C# 配列、リストへのランダムアクセスの速度
配列を使った時とリストを使った時とで、
ランダムアクセスのスピードがどれくらい違うのかを調べてみた。
長さ 5e7 の配列の 0 番目の要素を 5e7 回見るとき、
- 配列では、86 ms で、
- リストでは、95 ms であった。
2割ぐらい違う。
ボトルネックがランダムアクセスの時、
少し気をつけるないといけない。
using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Text; public class BenchMark { public static void Main() { new BenchMark().Do(); }//Main void Do() { const int len = (int)5e7; Stopwatch sw = new Stopwatch(); int[] array = new int[len]; var list = new List<int>(); Random rand = new Random(); for (int i = 0; i < array.Length; i++) list.Add(array[i] = rand.Next()); sw.Restart(); int a = 0; for (int i = 0; i < len; i++) { a += array[0]; } sw.Stop(); Console.WriteLine(sw.ElapsedMilliseconds); sw.Restart(); int b = 0; for (int i = 0; i < len; i++) { b += list[0]; } sw.Stop(); Console.WriteLine(sw.ElapsedMilliseconds); Console.WriteLine(a+" "+b); } }//BenchMark