测试的办法是用这两种循环形式遍历已知的汇合数据,应用的计时器是 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