Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/danielpalme/IocPerformance

Performance comparison of .NET IoC containers
https://github.com/danielpalme/IocPerformance

benchmark ioc

Last synced: 3 months ago
JSON representation

Performance comparison of .NET IoC containers

Awesome Lists containing this project

README

        

# Ioc Performance

[![Build Status](https://github.com/danielpalme/IocPerformance/workflows/Smoketest/badge.svg)](https://github.com/danielpalme/IocPerformance/workflows/Smoketest/badge.svg)

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](https://www.palmmedia.de/Blog/2011/8/30/ioc-container-benchmark-performance-comparison)

Author: Daniel Palme
Blog: [www.palmmedia.de](https://www.palmmedia.de)
Twitter: [@danielpalme](https://twitter.com/danielpalme)

## Results
### Explantions
**First value**: Time of single-threaded execution in [ms]
**Second value**: Time of multi-threaded execution in [ms]
**_*_**: Benchmark was stopped after 1 minute and result is extrapolated.
### Basic Features
|**Container**|**Singleton**|**Transient**|**Combined**|**Complex**|
|:------------|------------:|------------:|-----------:|----------:|
|**No**|41
49|49
59|69
76|99
103|
|**[abioc 0.8.0](https://github.com/JSkimming/abioc)**|26
43|**33**
56|**51**
82|**67**
**78**|
|**[Autofac 7.0.1](https://github.com/autofac/Autofac)**|1010
590|969
659|3118
1917|8470
5543|
|**[Caliburn.Micro 1.5.2](https://github.com/Caliburn-Micro/Caliburn.Micro)**|465
270|533
322|1583
906|7403
3712|
|**[Catel 5.12.22](http://www.catelproject.com)**|250
296|3979
4314|8954
9876|25104
23025|
|**[DryIoc 4.8.5](https://github.com/dadhi/DryIoc)**|63
54|73
73|89
100|110
101|
|**[DryIocZero 4.0.0](https://github.com/dadhi/DryIoc)**|110
96|88
89|98
105|220
169|
|**[Dynamo 3.0.2](http://martinf.github.io/Dynamo.IoC)**|95
70|104
86|207
158|685
381|
|**[Faster.Ioc 1.0.0](https://github.com/Wsm2110/Faster.Ioc)**|25
46|72
62|67
82|139
93|
|**[Grace 7.2.1](https://github.com/ipjohnson/Grace)**|**20**
**31**|39
**55**|52
84|73
83|
|**[Lamar 8.0.1](https://jasperfx.github.io/lamar/)**|61
63|86
83|117
110|130
127|
|**[LightInject 6.6.4](https://github.com/seesharper/LightInject)**|51
52|62
59|113
102|230
195|
|**[Maestro 3.6.6](https://github.com/JonasSamuelsson/Maestro)**|386
269|342
241|580
438|1411
1097|
|**[Mef 4.0.0.0](https://github.com/MicrosoftArchive/mef)**|22679
11820|37640
25052|57462
68730*|112712*
131716*|
|**[Mef2 7.0.0.0](https://blogs.msdn.com/b/bclteam/p/composition.aspx)**|298
235|327
176|327
248|621
410|
|**[MicroResolver 2.3.5](https://github.com/neuecc/MicroResolver)**|25
39|34
59|55
**77**|92
89|
|**[Microsoft Extensions DependencyInjection 7.0.0](https://github.com/aspnet/Extensions)**|68
58|96
79|110
106|131
112|
|**[Microsoft.VisualStudio.Composition 17.6.17](https://blogs.msdn.com/b/bclteam/p/composition.aspx)**|10905
12502|33562
21704|66196*
25605|60406*
55918|
|**[Mugen MVVM Toolkit 6.5.0](https://github.com/MugenMvvmToolkit/MugenMvvmToolkit)**|102
138|409
715|2052
2590|9348
11352|
|**[MvvmCross 8.0.2](https://github.com/MvvmCross/MvvmCross)**|205
251|1318
1402|3316
3726|8677
9516|
|**[Ninject 3.3.6](http://ninject.org)**|3809
4583|13588
11986|37822
28199|105486*
79549*|
|**[Pure.DI 2.0.0](https://github.com/DevTeam/Pure.DI)**|29
33|40
62|61
88|105
104|
|**[Rezolver 2.1.0](http://rezolver.co.uk)**|121
100|137
126|194
171|328
238|
|**[SimpleInjector 5.4.1](https://simpleinjector.org)**|87
67|71
91|152
129|233
179|
|**[Singularity 0.18.0](https://github.com/Barsonax/Singularity)**|24
39|39
59|66
82|76
84|
|**[Spring.NET 3.0.2](http://www.springframework.net/)**|565
451|3022
1649|9816
6870|28453
21414|
|**[Stashbox 5.11.0](https://github.com/z4kn4fein/stashbox)**|40
47|57
69|78
94|127
111|
|**[StructureMap 4.7.1](http://structuremap.net/structuremap)**|1121
717|1281
856|3410
2166|8312
6052|
|**[Unity 5.11.10](https://github.com/unitycontainer/unity)**|216
148|1443
835|3326
1995|9503
4739|
|**[Windsor 6.0.0](http://castleproject.org)**|549
533|2065
1168|6572
5948|20046
18318|
|**[ZenIoc 1.0.1](https://github.com/zenmvvm/ZenIoc)**|306
198|267
188|674
440|1809
1103|
|**[Zenject 8.0.0](https://github.com/modesttree/Zenject)**|479
448|1370
1070|3689
3065|11142
10106|
### Advanced Features
|**Container**|**Property**|**Generics**|**IEnumerable**|**Conditional**|**Child Container**|**Asp Net Core**|**Interception With Proxy**|
|:------------|-----------:|-----------:|--------------:|--------------:|------------------:|---------------:|--------------------------:|
|**No**|186
134|70
75|193
176|53
63|644
596|
|469
438|
|**[abioc 0.8.0](https://github.com/JSkimming/abioc)**|
|
|799
506|
|
|
|
|
|**[Autofac 7.0.1](https://github.com/autofac/Autofac)**|9031
5468|2319
1330|11000
6339|2085
1423|74767*
57993|44266
37346|24279
13732|
|**[Caliburn.Micro 1.5.2](https://github.com/Caliburn-Micro/Caliburn.Micro)**|9157
4733|
|5965
3393|
|
|
|
|
|**[Catel 5.12.22](http://www.catelproject.com)**|
|8872
9710|
|
|
|
|3937
4257|
|**[DryIoc 4.8.5](https://github.com/dadhi/DryIoc)**|144
131|86
88|294
219|81
79|
|1379
1005|835
555|
|**[DryIocZero 4.0.0](https://github.com/dadhi/DryIoc)**|294
205|92
92|302
229|380
270|
|
|
|
|**[Dynamo 3.0.2](http://martinf.github.io/Dynamo.IoC)**|828
455|
|
|
|
|
|
|
|**[Faster.Ioc 1.0.0](https://github.com/Wsm2110/Faster.Ioc)**|
|95
87|388
287|107
**66**|
|797
**635**|
|
|**[Grace 7.2.1](https://github.com/ipjohnson/Grace)**|101
112|**50**
80|257
210|**45**
70|50375
32231|657
674|827
571|
|**[Lamar 8.0.1](https://jasperfx.github.io/lamar/)**|133
98|106
108|634
432|
|
|4753
4323|
|
|**[LightInject 6.6.4](https://github.com/seesharper/LightInject)**|259
142|53
**69**|309
280|494
273|
|2098
1711|1921
1005|
|**[Maestro 3.6.6](https://github.com/JonasSamuelsson/Maestro)**|3886
2438|419
318|1272
843|
|
|10764
8560|6757
3630|
|**[Mef 4.0.0.0](https://github.com/MicrosoftArchive/mef)**|124500*
133833*|137086*
114221*|97231*
100896*|
|
|
|
|
|**[Mef2 7.0.0.0](https://blogs.msdn.com/b/bclteam/p/composition.aspx)**|1337
921|273
195|1851
813|
|
|
|
|
|**[MicroResolver 2.3.5](https://github.com/neuecc/MicroResolver)**|**39**
**62**|
|262
195|
|
|
|
|
|**[Microsoft Extensions DependencyInjection 7.0.0](https://github.com/aspnet/Extensions)**|
|117
94|363
242|
|
|4263
2412|
|
|**[Microsoft.VisualStudio.Composition 17.6.17](https://blogs.msdn.com/b/bclteam/p/composition.aspx)**|47046
34542|
|45837
38733|
|
|
|
|
|**[Mugen MVVM Toolkit 6.5.0](https://github.com/MugenMvvmToolkit/MugenMvvmToolkit)**|436
705|
|9749
7094|
|**4370**
**3103**|
|
|
|**[MvvmCross 8.0.2](https://github.com/MvvmCross/MvvmCross)**|1310
1415|6576
7299|
|
|4968
3230|
|
|
|**[Ninject 3.3.6](http://ninject.org)**|78292*
60394*|28241
20249|92792*
68004*|24794
18311|78784000*
45766768*|
|22231
19065|
|**[Pure.DI 2.0.0](https://github.com/DevTeam/Pure.DI)**|75
63|86
78|328
272|85
71|
|
|**249**
**192**|
|**[Rezolver 2.1.0](http://rezolver.co.uk)**|520
385|183
145|669
408|
|9589857*
5697265*|86587*
56374|
|
|**[SimpleInjector 5.4.1](https://simpleinjector.org)**|366
204|99
103|755
738|85
83|
|
|5503
4220|
|**[Singularity 0.18.0](https://github.com/Barsonax/Singularity)**|
|54
80|**241**
**193**|
|
|**631**
652|
|
|**[Spring.NET 3.0.2](http://www.springframework.net/)**|21087
16280|
|
|
|
|
|21268
15259|
|**[Stashbox 5.11.0](https://github.com/z4kn4fein/stashbox)**|148
181|108
97|542
509|74
83|871072*
663243*|2098
1280|917
643|
|**[StructureMap 4.7.1](http://structuremap.net/structuremap)**|8697
5284|2271
1460|8399
5170|
|3215578*
1887211*|65269*
41725|7859
4464|
|**[Unity 5.11.10](https://github.com/unitycontainer/unity)**|9045
5814|9842
6443|17755
12048|3547
2046|147355*
74313*|61350*
39009|56226
31096|
|**[Windsor 6.0.0](http://castleproject.org)**|38349
32062|16588
12021|17909
14575|
|252113*
175868*|
|16722
11052|
|**[ZenIoc 1.0.1](https://github.com/zenmvvm/ZenIoc)**|264
195|276
209|704
488|314
222|602490*
471765*|
|
|
|**[Zenject 8.0.0](https://github.com/modesttree/Zenject)**|15829
13135|9021
6513|17932
12687|3082
2428|22250
18595|
|
|
### Prepare
|**Container**|**Prepare And Register**|**Prepare And Register And Simple Resolve**|
|:------------|-----------------------:|------------------------------------------:|
|**No**|2
|2
|
|**[abioc 0.8.0](https://github.com/JSkimming/abioc)**|6327
|6556
|
|**[Autofac 7.0.1](https://github.com/autofac/Autofac)**|359
|367
|
|**[Caliburn.Micro 1.5.2](https://github.com/Caliburn-Micro/Caliburn.Micro)**|55
|56
|
|**[Catel 5.12.22](http://www.catelproject.com)**|11925
|9956
|
|**[DryIoc 4.8.5](https://github.com/dadhi/DryIoc)**|56
|64
|
|**[DryIocZero 4.0.0](https://github.com/dadhi/DryIoc)**|**0**
|**1**
|
|**[Dynamo 3.0.2](http://martinf.github.io/Dynamo.IoC)**|16240
|16527
|
|**[Faster.Ioc 1.0.0](https://github.com/Wsm2110/Faster.Ioc)**|51
|1283
|
|**[Grace 7.2.1](https://github.com/ipjohnson/Grace)**|157
|966
|
|**[Lamar 8.0.1](https://jasperfx.github.io/lamar/)**|2516
|3044
|
|**[LightInject 6.6.4](https://github.com/seesharper/LightInject)**|127
|2146
|
|**[Maestro 3.6.6](https://github.com/JonasSamuelsson/Maestro)**|128
|144
|
|**[Mef 4.0.0.0](https://github.com/MicrosoftArchive/mef)**|17
|2299
|
|**[Mef2 7.0.0.0](https://blogs.msdn.com/b/bclteam/p/composition.aspx)**|6114
|6957
|
|**[MicroResolver 2.3.5](https://github.com/neuecc/MicroResolver)**|27322
|67518
|
|**[Microsoft Extensions DependencyInjection 7.0.0](https://github.com/aspnet/Extensions)**|22
|35
|
|**[Microsoft.VisualStudio.Composition 17.6.17](https://blogs.msdn.com/b/bclteam/p/composition.aspx)**|9311
|11123
|
|**[Mugen MVVM Toolkit 6.5.0](https://github.com/MugenMvvmToolkit/MugenMvvmToolkit)**|15
|19
|
|**[MvvmCross 8.0.2](https://github.com/MvvmCross/MvvmCross)**|10
|16
|
|**[Ninject 3.3.6](http://ninject.org)**|134240*
|112279*
|
|**[Pure.DI 2.0.0](https://github.com/DevTeam/Pure.DI)**|**0**
|
|
|**[Rezolver 2.1.0](http://rezolver.co.uk)**|20835
|27706
|
|**[SimpleInjector 5.4.1](https://simpleinjector.org)**|825
|3214
|
|**[Singularity 0.18.0](https://github.com/Barsonax/Singularity)**|314
|874
|
|**[Spring.NET 3.0.2](http://www.springframework.net/)**|15929
|17596
|
|**[Stashbox 5.11.0](https://github.com/z4kn4fein/stashbox)**|202
|1113
|
|**[StructureMap 4.7.1](http://structuremap.net/structuremap)**|1325
|7389
|
|**[Unity 5.11.10](https://github.com/unitycontainer/unity)**|122
|287
|
|**[Windsor 6.0.0](http://castleproject.org)**|3927
|2927
|
|**[ZenIoc 1.0.1](https://github.com/zenmvvm/ZenIoc)**|77
|964
|
|**[Zenject 8.0.0](https://github.com/modesttree/Zenject)**|199
|201
|
### Charts
![Basic features](https://raw.githubusercontent.com/danielpalme/IocPerformance/master/docs/img/Overview_Basic_Fast.png)
![Advanced features](https://raw.githubusercontent.com/danielpalme/IocPerformance/master/docs/img/Overview_Advanced_Fast.png)
![Prepare](https://raw.githubusercontent.com/danielpalme/IocPerformance/master/docs/img/Overview_Prepare_Fast.png)
### Machine
The benchmark was executed on the following machine:
**CPU**: Intel(R) Core(TM) i5-6260U CPU @ 1.80GHz
**Memory**: 15,89GB