哪个是更快的列表<string> .foreach或listString.GetEnumerator()</string>

时间:2012-07-10 08:52:37

标签: c# .net list

我编写了以下代码来打印列表中的项目值。现在我想测量哪一个更快,我将有大量的清单来处理。请说明为什么你认为这更好(如果有任何证据)

那么我该如何计算处理时间?手动创建一个庞大的列表是唯一的选择吗?

  public void printMedod(string strPrintListVal)
        {
            Console.WriteLine(strPrintListVal);
        }


        static void Main(string[] args)
        {
            Program p1 = new Program();

            List<string> listString = new List<string> { "Rox","Stephens","Manahat","Lexus",":)"};
            listString.ForEach(p1.printMedod);
            Console.ReadKey();
        }

我也可以使用GetEnumerator做同样的事情:

        static void Main(string[] args)
        {
            List<string> listString = new List<string> { "Rox","Stephens","Manahat","Lexus",":)"};
            var enumerator = listString.GetEnumerator();
            while (enumerator.MoveNext())
            {
                var pair = enumerator.Current;
                Console.WriteLine(pair);
            }
            Console.ReadKey();
        }

3 个答案:

答案 0 :(得分:5)

ForEach通过列表,但我被告知for循环比其他任何东西都要快:

for(int i = 0;i < stringList.Length; i++)
{
    Console.WriteLine(stringList[i]);
}

答案 1 :(得分:3)

您可以使用LinqPad,它会显示执行时间

答案 2 :(得分:1)

这里也不是最好的选择,只需做

static void Main(string[] args)
{
    var stringList = new List<string> 
        { "Rox", "Stephens", "Manahat", "Lexus", ":)" };

    foreach(var s in stringList)
    {
        Console.WriteLine(s);
    }

    Console.ReadKey();
}

修改

在此StopWatch

中使用question个更多信息
using System.Diagnotics;

var stopWatch = new StopWatch();

stopWatch.Start();

// Do somthing
// If somthing is really fast do lots of somthing

stopWatch.Stop();

// The duration is a TimeSpan in stopWatch.Elapsed;