Bob*_*lan 6 c# performance diagnostics winforms
我试图弄清楚for循环是否比foreach循环更快,并且使用System.Diagnostics类来计算任务的时间.在运行测试时,我注意到我先放入的循环始终比最后一循环执行得慢.有人可以告诉我为什么会这样吗?我的代码如下:
using System;
using System.Diagnostics;
namespace cool {
class Program {
static void Main(string[] args) {
int[] x = new int[] { 3, 6, 9, 12 };
int[] y = new int[] { 3, 6, 9, 12 };
DateTime startTime = DateTime.Now;
for (int i = 0; i < 4; i++) {
Console.WriteLine(x[i]);
}
TimeSpan elapsedTime = DateTime.Now - startTime;
DateTime startTime2 = DateTime.Now;
foreach (var item in y) {
Console.WriteLine(item);
}
TimeSpan elapsedTime2 = DateTime.Now - startTime2;
Console.WriteLine("\nSummary");
Console.WriteLine("--------------------------\n");
Console.WriteLine("for:\t{0}\nforeach:\t{1}", elapsedTime, elapsedTime2);
Console.ReadKey();
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是输出:
for: 00:00:00.0175781
foreach: 00:00:00.0009766
Run Code Online (Sandbox Code Playgroud)
Gaz*_*Gaz 16
可能是因为类(例如Console)需要第一次进行JIT编译.您将通过首先调用所有方法(JIT(温暖然后)),然后执行测试来获得最佳指标.
正如其他用户所指出的那样,4次传球永远不足以向您展示差异.
顺便提一下,for和foreach之间的性能差异可以忽略不计,使用foreach的可读性好处几乎总是超过任何边际性能优势.
Stopwatch上课.Console.WriteLine在你的循环中.| 归档时间: |
|
| 查看次数: |
1476 次 |
| 最近记录: |