为情所困2017-05-16 13:10:54
對ArrayList
这样的可使用下标进行随机访问的数据结构,使用下标访问,要比foreach
的方式进行顺序访问,速度要快一些。foreach
这样写法,使用的过程产生一个额外的对象Enumerator
,而且每次訪問需要更多的操作,降低效能。
foreach
是通过GetEnumerator
获得一个IEnumerator
对象,通过IEnumerator
对象执行MoveNext()
方法和获取Current
屬性進行遍歷的。
由於Enumerator
中,做了版本检查处理
的工作,所以使用foreach
是线程安全
所以for
的效率通常来说是高于foreach
的,但話也不能說是絕對。
那麼如何選擇呢?我的建議是,在一些全局的,多執行緒可以存取的資料結構對象,使用foreach
。而对本地变量,则使用for
,效率和安全兼顧!
更新:剛剛查了一下資料,發現對於10W級以上的數組,foreach效率會更高,但對於1W級的數組,還是for效率高。
http://blog.csdn.net/w2cschoo...