【发布时间】:2015-11-27 18:32:07
【问题描述】:
int[] testArray = new int[200000000];
Stopwatch st2 = new Stopwatch();
st2.Start();
for (var j = 0; j < testArray.Length; j++)
{
}
st2.Stop();
Console.WriteLine("Total milliseconds - FOR LOOP: {0}", st2.Elapsed.TotalSeconds);
Stopwatch st = new Stopwatch();
st.Start();
foreach (var arr in testArray)
{
}
st.Stop();
Console.WriteLine("Total milliseconds - FOREACH LOOP: {0}", st.Elapsed.TotalSeconds);
结果:
为:0,7046522 秒
foreach: 0,05508682 秒
为什么我的 foreach 更快?我认为我的 for 循环会比 foreach 更快
【问题讨论】:
-
我得到了 foreach 大约 0.6 秒的结果 - 与 for-result(0.7 秒)差别不大
-
我无法复制这些结果。我在发布版本中得到
Total milliseconds - FOR LOOP: 0.1187888 Total milliseconds - FOREACH LOOP: 0.2583282。 -
阅读如何正确地对 JITed 代码进行基准测试。这不是一个有效的基准。
-
@MatthewWatson - 我得到的结果与你非常相似。
-
在两个循环中进行一些操作,以便进行更明智的测试
标签: c# performance loops