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.4.0 | 326 371 |
5088 5360 |
13304 14009 |
30210 32487 |
DryIoc 2.3.0 | 31 42 |
47 58 |
61 84 |
94 89 |
DryIocZero 2.1.0 | 78 72 |
82 81 |
85 82 |
203 150 |
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 |
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 4.0.9 | 53 52 |
63 74 |
76 80 |
110 96 |
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 |
Microsoft.Framework.DependencyInjection 1.0.0-beta8 | 193 256 |
148 124 |
317 292 |
908 993 |
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 |
SimpleInjector 3.1.3 | 62 61 |
98 78 |
112 92 |
157 123 |
Spring.NET 2.0.1 | 997 752 |
13890 9012 |
39235 33605 |
119975 82439 |
Stashbox 1.0.104.0 | 122 98 |
183 146 |
231 180 |
286 205 |
StructureMap 4.1.3.394 | 1288 1130 |
1392 965 |
4368 2797 |
11512 7115 |
StyleMVVM 3.1.5 | 656 454 |
543 383 |
833 527 |
2170 2363 |
TinyIoC 1.3 | 454 468 |
2123 1548 |
8825 6132 |
35707 26670 |
Unity 4.0.1 | 2846 1872 |
4571 2754 |
11527 7661 |
35292 23766 |
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.4.0 | 12718 13475 |
5002 5392 |
||||
DryIoc 2.3.0 | 118 102 |
67 74 |
340 239 |
76 78 |
928 588 |
|
DryIocZero 2.1.0 | 217 158 |
403 319 |
77 73 |
|||
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 |
|||
IfInjector 0.8.1 | 385 269 |
170 131 |
||||
LightCore 1.5.1 | 2487 1843 |
23120 15653 |
52456 31250 |
|||
LightInject 4.0.9 | 112 104 |
76 77 |
340 243 |
600 375 |
1576 1030 |
|
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 | ||||||
Microsoft.Framework.DependencyInjection 1.0.0-beta8 | 217 169 |
817 552 |
||||
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 |
|||||
SimpleInjector 3.1.3 | 222 162 |
105 96 |
825 523 |
102 90 |
1131 846 |
|
Spring.NET 2.0.1 | 91587 63045 |
72303 69545 |
||||
Stashbox 1.0.104.0 | 442 313 |
221 177 |
591 392 |
224 168 |
9818 6584 |
|
StructureMap 4.1.3.394 | 14110 7933 |
2856 4567 |
10568 5785 |
4562575* 2940266* |
16163 8494 |
|
StyleMVVM 3.1.5 | 2391 1093 |
1407 881 |
3703 4850 |
1598 965 |
||
TinyIoC 1.3 | 5062 4660 |
15411 9844 |
||||
Unity 4.0.1 | 42874 29680 |
72235 50134 |
60679 38214 |
157119 110328 |
||
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.4.0 | 17067 |
17340 |
DryIoc 2.3.0 | 80 |
597 |
DryIocZero 2.1.0 | 0 |
0 |
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 |
IfInjector 0.8.1 | 2101 |
2795 |
LightCore 1.5.1 | 233 |
247 |
LightInject 4.0.9 | 167 |
855 |
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 |
Microsoft.Framework.DependencyInjection 1.0.0-beta8 | 31 |
40 |
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 |
SimpleInjector 3.1.3 | 596 |
1697 |
Spring.NET 2.0.1 | 40443 |
34294 |
Stashbox 1.0.104.0 | 1332 |
2227 |
StructureMap 4.1.3.394 | 2095 |
10863 |
StyleMVVM 3.1.5 | 91820 |
85792 |
TinyIoC 1.3 | 185 |
224 |
Unity 4.0.1 | 957 |
3174 |
Windsor 3.3.0 | 4141 |
4463 |
The benchmark was executed on the following machine:
CPU: Intel(R) Core(TM) i7 CPU M 620 @ 2.67GHz
Memory: 7,86GB