Source code of my performance comparison of the most popular .NET IoC containers:
www.palmmedia.de/Blog/2011/8/30/ioc-container-benchmark-performance-comparison
Author: Daniel Palme
Blog: www.palmmedia.de
Twitter: @danielpalme
First value: Time of single-threaded execution in [ms]
Second value: Time of multi-threaded execution in [ms]
*: Benchmark was stopped after 3 minutes and result is extrapolated.
OoM: Benchmark was stopped after an OutOfMemoryException was thrown.
Error: Benchmark was stopped after an Exception was thrown.
Container | Singleton | Transient | Combined | Complex |
---|---|---|---|---|
No | 108 78 |
126 116 |
147 168 |
222 206 |
Autofac 3.5.2 | 893 723 |
2568 2571 |
6407 4071 |
18191 11244 |
Caliburn.Micro 1.5.2 | 538 353 |
670 405 |
1867 1085 |
7969 4632 |
Catel 4.0.0 | 339 408 |
5262 6654 |
13926 16622 |
36149 39037 |
DryIoc 1.4.1 | 31 48 |
42 57 |
56 83 |
92 81 |
Dynamo 3.0.2.0 | 105 80 |
134 103 |
234 162 |
823 493 |
fFastInjector 1.0.1 | 75 68 |
134 112 |
280 204 |
680 428 |
Funq 1.0.0.0 | 149 111 |
181 132 |
451 338 |
1327 852 |
Grace 2.4.2 | 188 127 |
303 294 |
907 926 |
2061 1291 |
Griffin 1.1.2 | 374 231 |
377 243 |
971 573 |
2813 1548 |
HaveBox 2.0.0 | 91 76 |
110 95 |
122 87 |
222 194 |
Hiro 1.0.4.41795 | 207 140 |
209 146 |
219 154 |
290 199 |
IfInjector 0.8.1 | 108 86 |
144 115 |
180 142 |
233 166 |
LightCore 1.5.1 | 203 171 |
3364 1998 |
34315 34496 |
193101* 205435* |
LightInject 3.0.2.5 | 29 48 |
44 64 |
70 85 |
93 88 |
LinFu 2.3.0.41559 | 4163 2443 |
24399 16041 |
64412 41898 |
170694 104578 |
Maestro 1.5.4 | 333 259 |
397 306 |
1115 728 |
3512 2556 |
Mef 4.0.0.0 | 34967 19746 |
53521 31946 |
87598 65396 |
175864 169289 |
Mef2 1.0.30.0 | 252 179 |
263 187 |
328 250 |
559 481 |
MicroSliver 2.1.6.0 | 566 303 |
818 543 |
2901 1802 |
8322 8170 |
Mugen 3.5.1 | 459 359 |
810 582 |
2380 1666 |
9042 6674 |
Munq 3.1.6 | 111 79 |
283 192 |
751 454 |
2389 1482 |
Ninject 3.2.2.0 | 7259 4486 |
24276 15296 |
69214 39610 |
191033* 117563 |
Petite 0.3.2 | 6626 4071 |
5546 3373 |
6971 4657 |
8246 6118 |
QuickInject 1.0.0.12 | 180 173 |
198 169 |
295 259 |
671 637 |
SimpleInjector 2.7.2 | 61 68 |
91 81 |
118 102 |
152 127 |
Spring.NET 1.3.2 | 1046 808 |
16566 10128 |
45510 29798 |
117230 75645 |
StructureMap 3.1.4.143 | 2531 2831 |
2787 2845 |
8181 8274 |
19198 20205 |
StyleMVVM 3.1.5 | 656 454 |
543 383 |
833 527 |
2170 2363 |
TinyIoC 1.3 | 454 468 |
2123 1548 |
8825 6132 |
35707 26670 |
Unity 3.5.1404.0 | 2873 3812 |
7182 3038 |
15294 8012 |
39116 21296 |
Windsor 3.3.0 | 519 383 |
2626 3658 |
8893 4861 |
26098 16700 |
Container | Property | Generics | IEnumerable | Conditional | Child Container | Interception With Proxy |
---|---|---|---|---|---|---|
No | 348 176 |
107 106 |
275 177 |
214 180 |
1899 524 |
88 106 |
Autofac 3.5.2 | 32706 20892 |
5158 3346 |
17288 12199 |
108964 86101 |
51505 37712 |
|
Caliburn.Micro 1.5.2 | 10427 6064 |
7758 4514 |
||||
Catel 4.0.0 | 16803 26672 |
9122 5947 |
||||
DryIoc 1.4.1 | 97 87 |
64 70 |
318 225 |
68 69 |
||
Dynamo 3.0.2.0 | 855 519 |
|||||
fFastInjector 1.0.1 | ||||||
Funq 1.0.0.0 | 1299 789 |
|||||
Grace 2.4.2 | 2828 1589 |
707 467 |
2601 1645 |
805 536 |
17498 10605 |
8723 5580 |
Griffin 1.1.2 | ||||||
HaveBox 2.0.0 | 1119 697 |
2252 1373 |
868 538 |
|||
Hiro 1.0.4.41795 | 3104 1931 |
|||||
IfInjector 0.8.1 | 385 269 |
170 131 |
||||
LightCore 1.5.1 | 2487 1843 |
23120 15653 |
52456 31250 |
|||
LightInject 3.0.2.5 | 99 87 |
74 80 |
346 233 |
73 71 |
1613 1010 |
|
LinFu 2.3.0.41559 | ||||||
Maestro 1.5.4 | 3866 2367 |
783 534 |
3901 2707 |
1070 693 |
8955 5331 |
|
Mef 4.0.0.0 | 180329* 178984 |
198621* 151746 |
137126 140873 |
|||
Mef2 1.0.30.0 | 1388 1099 |
347 241 |
1759 1379 |
|||
MicroSliver 2.1.6.0 | ||||||
Mugen 3.5.1 | 11883 7521 |
71914 76734 |
6944 7444 |
2060 1369 |
706941* OoM |
5051527* Error |
Munq 3.1.6 | 1899 1169 |
|||||
Ninject 3.2.2.0 | 165177 106569 |
67347 42019 |
151450 96672 |
53576 31926 |
45724250* 37677615* |
36162 22413 |
Petite 0.3.2 | 6297 3789 |
|||||
QuickInject 1.0.0.12 | 204 182 |
1280234* 919692* |
||||
SimpleInjector 2.7.2 | 238 179 |
99 91 |
841 523 |
228 168 |
7648 4651 |
|
Spring.NET 1.3.2 | 103584 66296 |
77502 43561 |
||||
StructureMap 3.1.4.143 | 18987 19486 |
5485 8342 |
17175 18164 |
3921913* 2703535* |
18162 12085 |
|
StyleMVVM 3.1.5 | 2391 1093 |
1407 881 |
3703 4850 |
1598 965 |
||
TinyIoC 1.3 | 5062 4660 |
15411 9844 |
||||
Unity 3.5.1404.0 | 40234 21537 |
65395 41530 |
53041 31885 |
128682 82599 |
||
Windsor 3.3.0 | 52083 32659 |
27157 17004 |
26641 13537 |
340330* Error |
21772 13042 |
Container | Prepare And Register | Prepare And Register And Simple Resolve |
---|---|---|
No | 4 |
4 |
Autofac 3.5.2 | 487 |
643 |
Caliburn.Micro 1.5.2 | 63 |
70 |
Catel 4.0.0 | 14591 |
14952 |
DryIoc 1.4.1 | 45 |
22822 |
Dynamo 3.0.2.0 | 19090 |
18509 |
fFastInjector 1.0.1 | 9324 |
8177 |
Funq 1.0.0.0 | 12 |
Error |
Grace 2.4.2 | 122304 |
123571 |
Griffin 1.1.2 | 12609 |
12089 |
HaveBox 2.0.0 | 81766 |
83181 |
Hiro 1.0.4.41795 | 310074* |
362562* |
IfInjector 0.8.1 | 2101 |
2795 |
LightCore 1.5.1 | 233 |
247 |
LightInject 3.0.2.5 | 239 |
930 |
LinFu 2.3.0.41559 | 140 |
538 |
Maestro 1.5.4 | 232 |
952 |
Mef 4.0.0.0 | 23 |
3054 |
Mef2 1.0.30.0 | 7330 |
11858 |
MicroSliver 2.1.6.0 | 18 |
23 |
Mugen 3.5.1 | 559 |
2378 |
Munq 3.1.6 | 12084 |
12117 |
Ninject 3.2.2.0 | 115051 |
157982 |
Petite 0.3.2 | 25 |
49 |
QuickInject 1.0.0.12 | 55 |
1721 |
SimpleInjector 2.7.2 | 248 |
1232 |
Spring.NET 1.3.2 | 36901 |
35698 |
StructureMap 3.1.4.143 | 1071 |
10211 |
StyleMVVM 3.1.5 | 91820 |
85792 |
TinyIoC 1.3 | 185 |
224 |
Unity 3.5.1404.0 | 1612 |
2584 |
Windsor 3.3.0 | 4141 |
4463 |