2.1.0
Changes
🚀 Enhancements
- SIMDify array/span initialization which improves performance by appx. 2-4x depending on supported vector width (PR #16)
- Improve
.ToList()
performance by 2x via directly passingRangeEnumerable
toList<int>
constructor which subsequently callsICollection.ToArray(...)
BenchmarkDotNet=v0.13.3, OS=macOS 13.1 (22C65) [Darwin 22.2.0]
AMD Ryzen 7 5800X 3.80GHz, 1 CPU, 8 logical and 8 physical cores
.NET SDK=8.0.100-alpha.1.23056.11
[Host] : .NET 8.0.0 (8.0.23.5503), X64 RyuJIT AVX2
DefaultJob : .NET 8.0.0 (8.0.23.5503), X64 RyuJIT AVX2
Method | Length | Mean | Error | Ratio | Allocated |
---|---|---|---|---|---|
RangeToArray | 10 | 8.249 ns | 0.1493 ns | 1.00 | 64 B |
EnumerableToArray | 10 | 15.416 ns | 0.1819 ns | 1.87 | 104 B |
RangeToList | 10 | 18.367 ns | 0.1284 ns | 2.23 | 120 B |
EnumerableToList | 10 | 22.675 ns | 0.4197 ns | 2.75 | 136 B |
RangeSelectToArray | 10 | 14.934 ns | 0.1617 ns | 1.81 | 96 B |
EnumerableSelectToArray | 10 | 27.146 ns | 0.2635 ns | 3.30 | 152 B |
RangeToArray | 100 | 19.584 ns | 0.1200 ns | 1.00 | 424 B |
EnumerableToArray | 100 | 44.881 ns | 0.2353 ns | 2.29 | 464 B |
RangeToList | 100 | 29.633 ns | 0.2484 ns | 1.51 | 480 B |
EnumerableToList | 100 | 97.329 ns | 0.7041 ns | 4.97 | 496 B |
RangeSelectToArray | 100 | 62.172 ns | 0.6928 ns | 3.18 | 456 B |
EnumerableSelectToArray | 100 | 75.454 ns | 0.8087 ns | 3.85 | 512 B |
RangeToArray | 10000 | 690.475 ns | 10.5986 ns | 1.00 | 40024 B |
EnumerableToArray | 10000 | 3,285.207 ns | 22.7170 ns | 4.76 | 40064 B |
RangeToList | 10000 | 1,231.378 ns | 11.5101 ns | 1.78 | 40080 B |
EnumerableToList | 10000 | 7,269.712 ns | 75.8317 ns | 10.52 | 40096 B |
RangeSelectToArray | 10000 | 5,024.135 ns | 49.6868 ns | 7.27 | 40056 B |
EnumerableSelectToArray | 10000 | 5,044.309 ns | 67.8153 ns | 7.30 | 40112 B |
📦 Dependencies
- Bump BenchmarkDotNet from 0.13.2 to 0.13.3 (PR #15) by @dependabot (bot)
🧰 Misc
Full Changelog: 2.0.0...2.1.0
Published with dotnet-releaser