for和foreach哪個執行效率快,相信很多人都會說當然是foreach快啊,在我實驗之前我也是這么認為的,直到今天。費話不多說,下面是測試的結果,區分Debug和Release,數據采用int[],List<int>,Person[],List<Pserson>,DataTable:
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Debug下
初始化5千萬整型數據...
初始化整型數據完成。耗時:650
使用For遍歷10次整型數組,求平均時間...
For循環整型數組平均時間:202.9
使用Foreach遍歷10次整型數組,求平均時間...
Foreach循環整型數組平均時間:236.8
使用For遍歷10次整型List,求平均時間...
For循環整型List平均時間:360.9
使用Foreach遍歷10次整型List,求平均時間...
Foreach循環整型List平均時間:269
---------------------------------------
初始化5千萬Object數據...
初始化Object數據完成。耗時:193656
使用For遍歷10次Object數組,求平均時間...
For循環Object數組平均時間:930
使用Foreach遍歷10次Object數組,求平均時間...
Foreach循環Object數組平均時間:1130.9
使用For遍歷10次ObjectList,求平均時間...
For循環ObjectList平均時間:923.7
使用Foreach遍歷10次ObjectList,求平均時間...
Foreach循環ObjectList平均時間:1282.8
---------------------------------------
初始化2千萬DataTable數據...
初始化時間:115291
使用For遍歷10次DataTable,求平均時間...
For循環DataTable平均時間:12014.4
使用Foreach遍歷10次DataTable,求平均時間...
Foreach循環DataTable平均時間:3804.4
Release====================================================================================================================
初始化5千萬整型數據...
初始化整型數據完成。耗時:513
使用For遍歷10次整型數組,求平均時間...
For循環整型數組平均時間:41.1
使用Foreach遍歷10次整型數組,求平均時間...
Foreach循環整型數組平均時間:46.4
使用For遍歷10次整型List,求平均時間...
For循環整型List平均時間:168.9
使用Foreach遍歷10次整型List,求平均時間...
Foreach循環整型List平均時間:165.3
-------------------------------------------------------
初始化5千萬Object數據...
初始化Object數據完成。耗時:157782
使用For遍歷10次Object數組,求平均時間...
For循環Object數組平均時間:38
使用Foreach遍歷10次Object數組,求平均時間...
Foreach循環Object數組平均時間:490.2
使用For遍歷10次ObjectList,求平均時間...
For循環ObjectList平均時間:365.5
使用Foreach遍歷10次ObjectList,求平均時間...
Foreach循環ObjectList平均時間:726.6
----------------------------------------------------
初始化2千萬DataTable數據...
初始化時間:114483
使用For遍歷10次DataTable,求平均時間...
For循環DataTable平均時間:12059
使用Foreach遍歷10次DataTable,求平均時間...
Foreach循環DataTable平均時間:3891.8
++++++++++++++++++++++++++++++++++++++++++++++
由此可以看出不同的數據結構,for和foreach執行效率是不一樣的,不能說哪個一定快。有些數據結構差別不大,有些差別就比較大。
以上測試條件為:
電腦型號 X64 兼容 台式電腦
操作系統 Windows 7 旗艦版 64位 ( DirectX 11 )
處理器 AMD FX -8320 Eight-Core 八核
主板 華碩 M5A78L-M LX3 PLUS ( AMD 780G/780V/790GX/890GX )
內存 8 GB ( 金士頓 DDR3 1600MHz )