关于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

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理