1+ using BenchmarkDotNet . Attributes ;
2+
3+ namespace TinyIoc . Benchmarks
4+ {
5+
6+ #if NET48 //These work on either platform but no point running them twice
7+ [ SimpleJob ( BenchmarkDotNet . Jobs . RuntimeMoniker . Net48 ) ]
8+ [ SimpleJob ( BenchmarkDotNet . Jobs . RuntimeMoniker . Net461 ) ]
9+ #endif
10+ #if NETCOREAPP3_1_OR_GREATER // These don't seem to work in a FX app
11+ [ SimpleJob ( BenchmarkDotNet . Jobs . RuntimeMoniker . NetCoreApp31 ) ]
12+ [ RyuJitX86Job ]
13+ #endif
14+ #if NET48 //These don't seem to work in a .net core app
15+ [ RyuJitX64Job ]
16+ [ MonoJob ]
17+ #endif
18+ [ MemoryDiagnoser ]
19+ public class ComplexHierarchyBenchmark
20+ {
21+ [ BenchmarkCategory ( "ComplexHierarchy" ) , Benchmark ]
22+ public DepA Original_DeepHierarchy ( )
23+ {
24+ var retVal = new TinyIoC . Original . TinyIoCContainer ( ) ;
25+ return retVal . Resolve < DepA > ( ) ;
26+ }
27+
28+ [ BenchmarkCategory ( "ComplexHierarchy" ) , Benchmark ]
29+ public DepA New_DeepHierarchy ( )
30+ {
31+ var retVal = new TinyIoC . TinyIoCContainer ( ) ;
32+ return retVal . Resolve < DepA > ( ) ;
33+ }
34+ }
35+
36+ public class DepA
37+ {
38+ public DepA ( DepB depB , DepC depC , DepD depD , DepE depE , DepF depF , DepG depG , DepH depH , DepI depI , DepJ depJ , DepK depK , DepL depL , DepM depM , DepN depN , DepO depO , DepP depP , DepQ depQ , DepR depR , DepS depS , DepT depT ) { }
39+ }
40+
41+ public class DepB
42+ {
43+ public DepB ( DepC depC , DepD depD , DepE depE , DepF depF , DepG depG , DepH depH , DepI depI , DepJ depJ , DepK depK , DepL depL , DepM depM , DepN depN , DepO depO , DepP depP , DepQ depQ , DepR depR , DepS depS , DepT depT ) { }
44+ }
45+
46+ public class DepC
47+ {
48+ public DepC ( DepD depD , DepE depE , DepF depF , DepG depG , DepH depH , DepI depI , DepJ depJ , DepK depK , DepL depL , DepM depM , DepN depN , DepO depO , DepP depP , DepQ depQ , DepR depR , DepS depS , DepT depT ) { }
49+ }
50+
51+
52+ public class DepD
53+ {
54+ public DepD ( DepE depE , DepF depF , DepG depG , DepH depH , DepI depI , DepJ depJ , DepK depK , DepL depL , DepM depM , DepN depN , DepO depO , DepP depP , DepQ depQ , DepR depR , DepS depS , DepT depT ) { }
55+ }
56+
57+ public class DepE
58+ {
59+ public DepE ( DepF depF , DepG depG , DepH depH , DepI depI , DepJ depJ , DepK depK , DepL depL , DepM depM , DepN depN , DepO depO , DepP depP , DepQ depQ , DepR depR , DepS depS , DepT depT ) { }
60+ }
61+
62+ public class DepF
63+ {
64+ public DepF ( DepG depG , DepH depH , DepI depI , DepJ depJ , DepK depK , DepL depL , DepM depM , DepN depN , DepO depO , DepP depP , DepQ depQ , DepR depR , DepS depS , DepT depT ) { }
65+ }
66+
67+ public class DepG
68+ {
69+ public DepG ( DepH depH , DepI depI , DepJ depJ , DepK depK , DepL depL , DepM depM , DepN depN , DepO depO , DepP depP , DepQ depQ , DepR depR , DepS depS , DepT depT ) { }
70+ }
71+
72+ public class DepH
73+ {
74+ public DepH ( DepI depI , DepJ depJ , DepK depK , DepL depL , DepM depM , DepN depN , DepO depO , DepP depP , DepQ depQ , DepR depR , DepS depS , DepT depT ) { }
75+ }
76+
77+ public class DepI
78+ {
79+ public DepI ( DepJ depJ , DepK depK , DepL depL , DepM depM , DepN depN , DepO depO , DepP depP , DepQ depQ , DepR depR , DepS depS , DepT depT ) { }
80+ }
81+
82+ public class DepJ
83+ {
84+ public DepJ ( DepK depK , DepL depL , DepM depM , DepN depN , DepO depO , DepP depP , DepQ depQ , DepR depR , DepS depS , DepT depT ) { }
85+ }
86+
87+ public class DepK
88+ {
89+ public DepK ( DepL depL , DepM depM , DepN depN , DepO depO , DepP depP , DepQ depQ , DepR depR , DepS depS , DepT depT ) { }
90+ }
91+
92+ public class DepL
93+ {
94+ public DepL ( DepM depM , DepN depN , DepO depO , DepP depP , DepQ depQ , DepR depR , DepS depS , DepT depT ) { }
95+ }
96+
97+ public class DepM
98+ {
99+ public DepM ( DepN depN , DepO depO , DepP depP , DepQ depQ , DepR depR , DepS depS , DepT depT ) { }
100+ }
101+
102+ public class DepN
103+ {
104+ public DepN ( DepO depO , DepP depP , DepQ depQ , DepR depR , DepS depS , DepT depT ) { }
105+ }
106+
107+ public class DepO
108+ {
109+ public DepO ( DepP depP , DepQ depQ , DepR depR , DepS depS , DepT depT ) { }
110+ }
111+
112+ public class DepP
113+ {
114+ public DepP ( DepQ depQ , DepR depR , DepS depS , DepT depT ) { }
115+ }
116+
117+ public class DepQ
118+ {
119+ public DepQ ( DepR depR , DepS depS , DepT depT ) { }
120+ }
121+
122+ public class DepR
123+ {
124+ public DepR ( DepS depS , DepT depT ) { }
125+ }
126+
127+ public class DepS
128+ {
129+ public DepS ( DepT depT ) { }
130+ }
131+
132+ public class DepT
133+ {
134+ }
135+ }
0 commit comments