トップページに戻る    次の競技プログラミングのメモへ

001 C#での標準入力でListとIEnumerableでの速度比較

C#での標準入力でListとIEnumerableでの速度を比較します。


C#のソース

using System;
using System.Collections.Generic;
using System.Linq;

class Program
{
    static List<string> Test1()
    {
        return new List<string>(Enumerable.Range(1, 1234567).Select(X => X.ToString()));
    }

    static IEnumerable<string> Test2()
    {
        for (int I = 1; I <= 1234567; I++)
            yield return I.ToString();
    }

    static void Main()
    {
        var sw1 = System.Diagnostics.Stopwatch.StartNew();
        int LenSum1 = Test1().Sum(X => X.Length);
        Console.WriteLine("Listでの経過時間");
        Console.WriteLine(sw1.Elapsed);
        Console.WriteLine();

        var sw2 = System.Diagnostics.Stopwatch.StartNew();
        int LenSum2 = Test2().Sum(X => X.Length);
        Console.WriteLine("IEnumerableでの経過時間");
        Console.WriteLine(sw2.Elapsed);
    }
}


実行結果

Listでの経過時間
00:00:01.6031680

IEnumerableでの経過時間
00:00:01.0498563


解説

100万をこえるようだと差が出るようですね。