Visual Studio でプロジェクトを新規作成4<ProjectSdk="Microsoft.NET.Sdk"><PropertyGroup><OutputType>Exe</OutputType><TargetFramework>netcoreapp3.1</TargetFramework><Nullable>enable</Nullable></PropertyGroup></Project>
ツール: BenchmarkDotNet37using BenchmarkDotNet.Attributes;usingSystem.Linq;class Program{static void Main()=> BenchmarkRunner.Run<SampleBenchMark>();}[ShortRunJob][HtmlExporter][CsvExporter]public class SampleBenchMark{const int count = 10000;int[] array = new int[0];[GlobalSetup]public void Setup()=> array = Enumerable.Range(0, count).ToArray();[Benchmark]public int 配列をforして合計を求める(){var sum = 0;for (var index = 0; index < array.Length; index++)sum += array[index];return sum;}[Benchmark]public int 配列をforeachして合計を求める(){var sum = 0;foreach (var element in array)sum += element;return sum;}}
非ジェネリック版のコレクションを使うと…41struct FooStruct {publicint Value { get; set; }}public int 非ジェネリック版Collection(){var list = new ArrayList();for (var count = 0; count < Size; count++)list.Add(new FooStruct { Value = 0 });var sum = 0;for (var index = 0; index < list.Count;index++)sum += ((FooStruct)list[index]).Value;return sum;}public int ジェネリック版Collection(){var list = new List<FooStruct>();for (var count = 0; count < Size; count++)list.Add(new FooStruct { Value = 0 });var sum = 0;for (var index = 0; index < list.Count;index++)sum += list[index].Value;return sum;}