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

RuntimeCategoriesLengthforforeachForEach()
.NET 8.0 Array 1000 239.1 ns 234.4 ns 467.2 ns
.NET 7.0 Array 1000 239.9 ns 238.4 ns 1,476.6 ns
.NET 6.0 Array 1000 244.0 ns 235.9 ns 1,410.8 ns
.NET 5.0 Array 1000 267.8 ns 487.2 ns 1,424.1 ns
.NET Core 3.0 Array 1000 286.5 ns 465.4 ns 1,627.6 ns
.NET Core 3.1 Array 1000 288.7 ns 235.7 ns 1,397.3 ns
RuntimeCategoriesLengthforforeachForEach()
.NET 8.0 List 1000 353.5 ns 407.7 ns 704.2 ns
.NET 6.0 List 1000 353.6 ns 706.2 ns 1,646.3 ns
.NET 5.0 List 1000 354.0 ns 1,868.0 ns 1,632.8 ns
.NET Core 3.0 List 1000 472.1 ns 1,658.8 ns 1,631.3 ns
.NET Core 3.1 List 1000 473.1 ns 1,653.8 ns 1,467.3 ns
.NET 7.0 List 1000 475.0 ns 470.3 ns 1,560.1 ns
Powered by https://github.com/mjebrahimi/BenchmarkDotNetVisualizer