Foreach
The C# statement foreach
is a convenient way to traverse an enumerable collection, but because it uses an enumerator it is also more expensive than a normal for
loop.
The following code uses a trivial foreach
loop:
int k = 0; foreach loopforeach (int j in list) { k = j; }
This code uses a for
loop instead:
int k = 0; int listLength = list.Count; for (int i = 0; i < listLength; i++) { k = list[i]; }
For completeness, I also tested a loop that counts backwards to zero, rather than forwards to the list count:
int k = 0; for (int i = list.Count - 1; i >= 0; i--) { k = list[i]; }
I used a List<int>
with 1000 integers. On my machine, the results were:
Test |
Time taken (ticks) |
---|---|
foreach—1000 List<int> accesses |
168 |
for 1000—List<int> accesses |
Get ASP.NET Site Performance Secrets now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.