Skip to content

Commit 3f59271

Browse files
author
Joshua Rogers
committed
Add benchmark for a deep hierarchy
1 parent 49889cc commit 3f59271

File tree

1 file changed

+135
-0
lines changed

1 file changed

+135
-0
lines changed
Lines changed: 135 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,135 @@
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

Comments
 (0)