Performance Comparison between for, foreach, and ForEeach() method
BenchmarkDotNet v0.13.12, Windows 11 (10.0.22631.3007/23H2/2023Update/SunValley3)
AMD Ryzen 7 5800H with Radeon Graphics, 1 CPU, 16 logical and 8 physical cores
.NET SDK 8.0.101
[Host] : .NET 8.0.1 (8.0.123.58001), X64 RyuJIT AVX2
ShortRun-.NET 5.0 : .NET 5.0.17 (5.0.1722.21314), X64 RyuJIT AVX2
ShortRun-.NET 6.0 : .NET 6.0.26 (6.0.2623.60508), X64 RyuJIT AVX2
ShortRun-.NET 7.0 : .NET 7.0.15 (7.0.1523.57226), X64 RyuJIT AVX2
ShortRun-.NET 8.0 : .NET 8.0.1 (8.0.123.58001), X64 RyuJIT AVX2
ShortRun-.NET Core 3.0 : .NET Core 3.1.32 (CoreCLR 4.700.22.55902, CoreFX 4.700.22.56512), X64 RyuJIT AVX2
ShortRun-.NET Core 3.1 : .NET Core 3.1.32 (CoreCLR 4.700.22.55902, CoreFX 4.700.22.56512), X64 RyuJIT AVX2
IterationCount=3 LaunchCount=1 WarmupCount=3
Comparison: Mean
Method | Categories | Length | .NET Core 3.0 | .NET Core 3.1 | .NET 5.0 | .NET 6.0 | .NET 7.0 | .NET 8.0 |
for |
Array |
1000 |
286.5 ns |
288.7 ns |
267.8 ns |
244.0 ns |
239.9 ns |
239.1 ns |
foreach |
Array |
1000 |
465.4 ns |
235.7 ns |
487.2 ns |
235.9 ns |
238.4 ns |
234.4 ns |
ForEach() |
Array |
1000 |
1,627.6 ns |
1,397.3 ns |
1,424.1 ns |
1,410.8 ns |
1,476.6 ns |
467.2 ns |
Method | Categories | Length | .NET Core 3.0 | .NET Core 3.1 | .NET 5.0 | .NET 6.0 | .NET 7.0 | .NET 8.0 |
for |
List |
1000 |
472.1 ns |
473.1 ns |
354.0 ns |
353.6 ns |
475.0 ns |
353.5 ns |
ForEach() |
List |
1000 |
1,631.3 ns |
1,467.3 ns |
1,632.8 ns |
1,646.3 ns |
1,560.1 ns |
704.2 ns |
foreach |
List |
1000 |
1,658.8 ns |
1,653.8 ns |
1,868.0 ns |
706.2 ns |
470.3 ns |
407.7 ns |