11using System . Linq ;
22using BenchmarkDotNet . Attributes ;
3+ using StructLinq . Range ;
34
45namespace StructLinq . Benchmark
56{
@@ -9,41 +10,49 @@ public class Max
910 private const int Count = 10000 ;
1011
1112 [ Benchmark ( Baseline = true ) ]
12- public int RawMax ( )
13+ public int Handmaded ( )
1314 {
14- var max = int . MaxValue ;
15+ var max = int . MinValue ;
1516 for ( var index = 0 ; index < Count ; index ++ )
1617 {
17- if ( index < max )
18+ if ( index > max )
1819 max = index ;
1920 }
2021
2122 return max ;
2223 }
2324
2425 [ Benchmark ]
25- public int SysMax ( )
26+ public int LINQ ( )
2627 {
27- return Enumerable . Range ( 0 , Count ) . Min ( ) ;
28+ return Enumerable . Range ( 0 , Count ) . Max ( ) ;
2829 }
2930
3031 [ Benchmark ]
31- public int StructMax ( )
32+ public int StructLINQ ( )
3233 {
33- return StructEnumerable . Range ( 0 , Count ) . Min ( ) ;
34+ return StructEnumerable . Range ( 0 , Count ) . Max ( ) ;
3435 }
3536
37+
38+ [ Benchmark ]
39+ public int ZeroAllocStructLINQ ( )
40+ {
41+ return StructEnumerable . Range ( 0 , Count ) . Max ( x=> x ) ;
42+ }
43+
44+
3645 [ Benchmark ]
37- public int ZeroAllocStructMax ( )
46+ public int ZeroAllocStructLINQOnEnumerable ( )
3847 {
39- return StructEnumerable . Range ( 0 , Count ) . Min ( x=> x ) ;
48+ return StructEnumerable . Range ( 0 , Count ) . Max ( x=> ( IStructEnumerable < int , RangeEnumerator > ) x ) ;
4049 }
4150
4251
4352 [ Benchmark ]
44- public int ConvertMax ( )
53+ public int ConvertMin ( )
4554 {
46- return Enumerable . Range ( 0 , Count ) . ToStructEnumerable ( ) . Min ( ) ;
55+ return Enumerable . Range ( 0 , Count ) . ToStructEnumerable ( ) . Max ( ) ;
4756 }
4857
4958 }
0 commit comments