== Resources === Documentation * https://learn.microsoft.com/en-us/dotnet/api/system.collections.ilist.item[IList.Item[Int32\]] * https://learn.microsoft.com/en-us/dotnet/api/system.collections.generic.ilist-1.item[IList.Item[Int32\]] * https://learn.microsoft.com/en-us/dotnet/api/system.collections.generic.ireadonlylist-1.item[IReadonlyList.Item[Int32\]] === Benchmarks [options="header"] |=== | Method | Runtime | Mean | Standard Deviation | ElementAt | 3,403.4 ns | 28.52 ns | 26.67 ns | Index | 478.0 ns | 6.93 ns | 6.48 ns | First | 6,160.0 ns | 57.66 ns | 53.93 ns | First_Index | 485.7 ns | 5.81 ns | 5.15 ns | Last | 6,034.3 ns | 20.34 ns | 16.98 ns | Last_Index | 408.3 ns | 2.54 ns | 2.38 ns |=== ==== Glossary * https://en.wikipedia.org/wiki/Arithmetic_mean[Mean] * https://en.wikipedia.org/wiki/Standard_deviation[Standard Deviation] The results were generated by running the following snippet with https://github.com/dotnet/BenchmarkDotNet[BenchmarkDotNet]: [source,csharp] ---- private List data; private Random random; [Params(1_000_000)] public int SampleSize; [Params(1_000)] public int LoopSize; [GlobalSetup] public void Setup() { random = new Random(42); var bytes = new byte[SampleSize]; random.NextBytes(bytes); data = bytes.ToList(); } [Benchmark] public int ElementAt() { int result = default; for (var i = 0; i < LoopSize; i++) { result = data.ElementAt(i); } return result; } [Benchmark] public int Index() { int result = default; for (var i = 0; i < LoopSize; i++) { result = data[i]; } return result; } [Benchmark] public int First() { int result = default; for (var i = 0; i < LoopSize; i++) { result = data.First(); } return result; } [Benchmark] public int First_Index() { int result = default; for (var i = 0; i < LoopSize; i++) { result = data[0]; } return result; } [Benchmark] public int Last() { int result = default; for (var i = 0; i < LoopSize; i++) { result = data.Last(); } return result; } [Benchmark] public int Last_Index() { int result = default; for (var i = 0; i < LoopSize; i++) { result = data[data.Count - 1]; } return result; } ---- Hardware configuration: ---- BenchmarkDotNet=v0.13.5, OS=Windows 10 (10.0.19045.4412/22H2/2022Update) 11th Gen Intel Core i7-11850H 2.50GHz, 1 CPU, 16 logical and 8 physical cores .NET SDK=8.0.301 [Host] : .NET 8.0.6 (8.0.624.26715), X64 RyuJIT AVX2 .NET 8.0 : .NET 8.0.6 (8.0.624.26715), X64 RyuJIT AVX2 ----