乐趣区

关于c#:C-for-与-foreach-循环的性能测试

测试的办法是用这两种循环形式遍历已知的汇合数据,应用的计时器是 Stopwatch 类,最初会在两个相应的文本框中输入工夫耗费,先间接贴出后果画面:

测试各执行了十次,其中右边的文本框是 for 语句的后果,左边的是 foreach 语句的后果,能够看出 foreach 语句在这个程序当中效率更高,上面是测试的局部代码:

using System;
using System.Diagnostics;
using System.Collections.Generic;
using System.Windows.Forms;

private List<int> datas = new List<int>(100000000);
for (int i = 0; i < 100000000; i++)
{datas.Add(i);
}
// for
private void normalFor()
{Stopwatch watch = new Stopwatch();
    watch.Start();
    int result = 0;
    for (int i = 0; i < datas.Count; i++)
    {result += datas[i];
    }
    watch.Stop();
    textBox1.Text += watch.ElapsedMilliseconds.ToString() + "ms\r\n";}
// foreach
private void forEach()
{Stopwatch watch = new Stopwatch();
    watch.Start();
    int result = 0;
    foreach (int i in datas)
    {result += i;}
    watch.Stop();
    textBox2.Text += watch.ElapsedMilliseconds.ToString() + "ms\r\n";}

这个程序中拿了较为极其的数据来作测试,最终也只是达到了不到 200 ms 的差距,实际上在应用环境中两者之间的性能差异基本上能够忽略不计,还是就思考开发者的应用习惯和上下文环境来进行抉择。

相干环境:
.NET Framework 4.5

退出移动版