Javaと情熱のあいだ

カステラとドーナツと珈琲

C#のArray.ConvertAllについてのメモ

配列に対して特定の処理をする場合Array.ConvertAllを使用すると
上手く処理出来るが、LINQのSelectと比べると処理速度で見劣りがします。
しかし、LINQの方ははSelect後にToArrayなどを行うと結果としてArray.ConvertAllより遅くなるのでどうしたものか。

static void Main(string[] args)
{
    string[] fizz = createFizz();

    System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();
    sw.Start();
    string[] buzz2 = Array.ConvertAll(fizz, fruit => fruit.Substring(0, 2));
    sw.Stop();
    Console.WriteLine(sw.Elapsed);

    sw.Reset();
    sw.Start();
    var buzz1 = fizz.Select((fiz) => fiz.Substring(0, 2));
    sw.Stop();

    Console.WriteLine(sw.Elapsed);

    Console.ReadKey();
}

static string[] createFizz()
{
    List<string> list = new List<string>();

    int seed = Environment.TickCount;

    for (int i = 0; i < 1000000; i++)
    {
        Random rnd = new Random(seed++);

        for (int j = 0; j < 10; j++)
        {
            list.Add(rnd.Next(10, 100).ToString());
        }
    }

    return list.ToArray();
}