这个问题源于我问上一个问题的原因foreach
循环。我有一个很大的字符串数组(比如说数千个),我想迭代该数组并且还能够根据特定条件进行突破,并且我需要最佳性能。
一些示例代码:
for(int i = 0; i < array.length && flag == true; i++){
//Processing and set flag
}
//..or
foreach(string item in array){
//processing...set flag
if(!flag)
break;
}
哪种方式会比较便宜?
您始终可以对它们进行基准测试。用一个Stopwatch
并迭代,比如说,一千万次迭代,看看哪个更快。
不过,我想你会发现,两者是几乎相同因为 JIT 编译器优化了foreach
on an array基本上是一个for
.
弗莱文100 https://stackoverflow.com/questions/4661138/a-faster-loop-approach-for-and-foreach/4661158#4661158实际上是对的一般来说 a for
is slightly比一个更有效foreach
对于类型,其GetEnumerator
方法创建一个新对象实现IEnumerator
or IEnumerator<T>
(由于内存分配和方法调用开销);对于大多数收藏品来说,情况较少System.Collections.Generic
然而,由于它们明确的IEnumerable
使用值类型枚举器实现(更不用说the foreach构造实际上并不需要IEnumerable首先实施 http://philosopherdeveloper.wordpress.com/2010/08/28/pop-quiz-how-do-you-make-your-type-enumerable-using-the-foreach-keyword/).
是均匀的less数组的情况尤其如此,因为它们是固定大小的,因此 JIT 编译器优化起来很简单。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)