1
1
using System . Collections . Frozen ;
2
+ using System . Collections . Immutable ;
2
3
using BenchmarkDotNet . Attributes ;
3
4
using BenchmarkDotNet . Running ;
4
5
5
- BenchmarkRunner . Run < Benchi > ( ) ;
6
+ BenchmarkSwitcher . FromAssembly ( typeof ( LookupBenchmark ) . Assembly ) . Run ( ) ;
6
7
7
- public class Benchi
8
+ public class LookupBenchmark
8
9
{
9
- private const int OneHundred = 100 ;
10
- private readonly List < int > oneToHundredList = Enumerable . Range ( 0 , OneHundred ) . ToList ( ) ;
11
- private readonly FrozenSet < int > oneToHundredFrozen = Enumerable . Range ( 0 , OneHundred ) . ToFrozenSet ( ) ;
12
- private readonly HashSet < int > oneToHundredHashSet = Enumerable . Range ( 0 , OneHundred ) . ToHashSet ( ) ;
13
- private readonly HashSet < int > oneToHundredImmutableHashSet = Enumerable . Range ( 0 , OneHundred ) . ToHashSet ( ) ;
10
+ private const int Iterations = 1000 ;
11
+ private readonly List < int > list = Enumerable . Range ( 0 , Iterations ) . ToList ( ) ;
12
+ private readonly FrozenSet < int > frozenSet = Enumerable . Range ( 0 , Iterations ) . ToFrozenSet ( ) ;
13
+ private readonly HashSet < int > hashSet = Enumerable . Range ( 0 , Iterations ) . ToHashSet ( ) ;
14
+ private readonly ImmutableHashSet < int > immutableHashSet = Enumerable . Range ( 0 , Iterations ) . ToImmutableHashSet ( ) ;
14
15
15
16
[ Benchmark ( Baseline = true ) ]
16
17
public void LookupList ( )
17
18
{
18
- for ( var i = 0 ; i < OneHundred ; i ++ )
19
- _ = oneToHundredList . Contains ( i ) ;
19
+ for ( var i = 0 ; i < Iterations ; i ++ )
20
+ _ = list . Contains ( i ) ;
20
21
}
21
22
22
23
[ Benchmark ]
23
24
public void LookupFrozen ( )
24
25
{
25
- for ( var i = 0 ; i < OneHundred ; i ++ )
26
- _ = oneToHundredFrozen . Contains ( i ) ;
26
+ for ( var i = 0 ; i < Iterations ; i ++ )
27
+ _ = frozenSet . Contains ( i ) ;
27
28
}
28
29
29
30
[ Benchmark ]
30
31
public void LookupHashSet ( )
31
32
{
32
- for ( var i = 0 ; i < OneHundred ; i ++ )
33
- _ = oneToHundredHashSet . Contains ( i ) ;
33
+ for ( var i = 0 ; i < Iterations ; i ++ )
34
+ _ = hashSet . Contains ( i ) ;
34
35
}
35
36
36
37
[ Benchmark ]
37
38
public void LookupImmutableHashSet ( )
38
39
{
39
- for ( var i = 0 ; i < OneHundred ; i ++ )
40
- _ = oneToHundredImmutableHashSet . Contains ( i ) ;
40
+ for ( var i = 0 ; i < Iterations ; i ++ )
41
+ _ = immutableHashSet . Contains ( i ) ;
41
42
}
43
+ }
44
+
45
+ public class CreateBenchmark
46
+ {
47
+ private readonly int [ ] from = Enumerable . Range ( 0 , 1000 ) . ToArray ( ) ;
48
+
49
+ [ Benchmark ( Baseline = true ) ]
50
+ public List < int > CreateList ( ) => from . ToList ( ) ;
51
+
52
+ [ Benchmark ]
53
+ public FrozenSet < int > CreateFrozenList ( ) => from . ToFrozenSet ( ) ;
54
+
55
+ [ Benchmark ]
56
+ public HashSet < int > CreateHashSet ( ) => from . ToHashSet ( ) ;
57
+
58
+ [ Benchmark ]
59
+ public ImmutableHashSet < int > CreateImmutableHashSet ( ) => from . ToImmutableHashSet ( ) ;
42
60
}
0 commit comments