1- using System . Collections . Generic ;
2- using System . Linq ;
1+ using System . Linq ;
32using BenchmarkDotNet . Attributes ;
4- using StructLinq . IEnumerable ;
5- using StructLinq . Range ;
63
74namespace StructLinq . Benchmark
85{
@@ -17,24 +14,18 @@ namespace StructLinq.Benchmark
1714 //```
1815 //| Method | Mean | Error | StdDev | Ratio | RatioSD | Gen 0 | Gen 1 | Gen 2 | Allocated |
1916 //|----------- |----------:|----------:|----------:|------:|--------:|------:|------:|------:|----------:|
20- //| ForSum | 3.116 us | 0.0663 us | 0.1161 us | 1.00 | 0.00 | - | - | - | - |
21- //| SysSum | 45.478 us | 0.9326 us | 1.3375 us | 14.52 | 0.73 | - | - | - | 40 B |
22- //| StructSum | 3.044 us | 0.0597 us | 0.0687 us | 0.98 | 0.04 | - | - | - | - |
23- //| ConvertSum | 44.414 us | 0.6786 us | 0.6348 us | 14.17 | 0.67 | - | - | - | 41 B |
17+ //| ForSum | 3.004 us | 0.0598 us | 0.1000 us | 1.00 | 0.00 | - | - | - | - |
18+ //| SysSum | 40.905 us | 0.5443 us | 0.5092 us | 13.38 | 0.53 | - | - | - | 40 B |
19+ //| StructSum | 2.969 us | 0.0390 us | 0.0365 us | 0.97 | 0.03 | - | - | - | - |
20+ //| ConvertSum | 40.720 us | 0.5673 us | 0.5306 us | 13.32 | 0.58 | - | - | - | 40 B |
2421
2522
2623 [ MemoryDiagnoser , DisassemblyDiagnoser ( recursiveDepth : 4 ) ]
2724 public class Sum
2825 {
29- private readonly IEnumerable < int > sysRange ;
30- private readonly IStructEnumerable < int , GenericEnumerator < int > > convertRange ;
3126 private const int Count = 10000 ;
32- private readonly IStructEnumerable < int , RangeEnumerator > structRange ;
3327 public Sum ( )
3428 {
35- sysRange = Enumerable . Range ( 0 , Count ) ;
36- convertRange = Enumerable . Range ( 0 , Count ) . ToStructEnumerable ( ) ;
37- structRange = StructEnumerable . Range ( 0 , Count ) ;
3829 }
3930
4031
@@ -52,19 +43,19 @@ public int ForSum()
5243 [ Benchmark ]
5344 public int SysSum ( )
5445 {
55- return sysRange . Sum ( ) ;
46+ return Enumerable . Range ( 0 , Count ) . Sum ( ) ;
5647 }
5748
5849 [ Benchmark ]
5950 public int StructSum ( )
6051 {
61- return structRange . Sum ( ) ;
52+ return StructEnumerable . Range ( 0 , Count ) . Sum ( x => x ) ;
6253 }
6354
6455 [ Benchmark ]
6556 public int ConvertSum ( )
6657 {
67- return convertRange . Sum ( ) ;
58+ return Enumerable . Range ( 0 , Count ) . ToStructEnumerable ( ) . Sum ( x => x ) ;
6859 }
6960
7061 }
0 commit comments