一个疑问
一個(gè)疑問
摘自: more effective c#
?
9. 對數(shù)組跟集合使用foreach
循環(huán)數(shù)組或集合有三種方式:
?
int[] foo = new int[100];?
第一種:
?
第二種:
?
?
第三種:
?
?
對于C或C++,第三種循環(huán)效率最佳。但是在C#中是最差的,因?yàn)樵谠L問每一個(gè)實(shí)際的集合時(shí),運(yùn)行時(shí)確保對每個(gè)集合的邊界做檢測。而將集合的大小賦值給一個(gè)變量,這使得每次進(jìn)行for循環(huán)第二個(gè)條件參數(shù)總需要對邊界進(jìn)行兩次檢測。并使得JIT編譯器在生成代碼的時(shí)候做了更多的事情。??????????????????
?
原始的C#編譯器對第二種循環(huán)效率是最佳的,反而foreach循環(huán)效率差,主要是因?yàn)樯婕暗窖b箱操作。而數(shù)組類型是安全的情況下,foreach可以為數(shù)組生成不一樣的IL代碼,使得效率跟第二種循環(huán)一樣。并且使用foreach可以寫更少的代碼。
?
posted on 2018-09-17 11:07 時(shí)空觀察者9號 閱讀(...) 評論(...) 編輯 收藏
總結(jié)
- 上一篇: 1970.1.1这个特殊时间
- 下一篇: C# 2018.9.17