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