相关疑难解决方法(0)

在.NET中,哪个循环运行得更快,'for'或'foreach'?

在C#/ VB.NET/.NET中,哪个循环运行得更快,for或者foreach

自从我读了一个for循环工程快于foreach环路很久以前我以为这对所有集合,泛型集合,所有阵列,等真正站在

我搜索谷歌并发现了一些文章,但其中大多数都没有结果(阅读文章的评论)和开放式.

什么是理想的是列出每个场景和相同的最佳解决方案.

例如(只是它应该如何的一个例子):

  1. 迭代1000多个字符串的数组 - for比...更好foreach
  2. 迭代IList(非泛型)字符串 - foreach比...更好for

在网上找到的一些参考文献:

  1. Emmanuel Schanzer的原创宏伟文章
  2. CodeProject FOREACH Vs. 对于
  3. 博客 - foreach或不是foreach,这就是问题
  4. ASP.NET论坛 - NET 1.1 C#forvsforeach

[编辑]

除了可读性方面,我对事实和数据非常感兴趣.有些应用程序的最后一英里性能优化受到挤压很重要.

.net c# performance for-loop

322
推荐指数
20
解决办法
19万
查看次数

C#,For循环和速度测试......第二次完全相同的循环更快?

public Int64 ReturnDifferenceA()
{
  User[] arrayList;
  Int64 firstTicks;
  IList<User> userList;
  Int64 secondTicks;
  System.Diagnostics.Stopwatch watch;

  userList = Enumerable
              .Range(0, 1000)
              .Select(currentItem => new User()).ToList();

  arrayList = userList.ToArray();

  watch = new Stopwatch();
  watch.Start();

  for (Int32 loopCounter = 0; loopCounter < arrayList.Count(); loopCounter++)
  {
     DoThings(arrayList[loopCounter]);
  }

  watch.Stop();
  firstTicks = watch.ElapsedTicks;

  watch.Reset();
  watch.Start();
  for (Int32 loopCounter = 0; loopCounter < arrayList.Count(); loopCounter++)
  {
     DoThings(arrayList[loopCounter]);
  }
  watch.Stop();
  secondTicks = watch.ElapsedTicks;

  return firstTicks - secondTicks;
}
Run Code Online (Sandbox Code Playgroud)

如您所见,这非常简单.创建用户列表,强制使用数组,启动监视,循环列表并调用方法,停止监视.重复.通过返回第一次运行和第二次运行的差异来完成.

现在我打电话给这些:

differenceList = Enumerable
                 .Range(0, 50)
                 .Select(currentItem => ReturnDifferenceA()).ToList(); …
Run Code Online (Sandbox Code Playgroud)

c# arrays foreach loops for-loop

4
推荐指数
1
解决办法
3307
查看次数

标签 统计

c# ×2

for-loop ×2

.net ×1

arrays ×1

foreach ×1

loops ×1

performance ×1