Releases: unitycontainer/unity
Releases · unitycontainer/unity
5.7.2.479
5.7.0.476
Performance Optimization
This release is all about optimizing performance. These are the latest benchmarks:
BenchmarkDotNet=v0.10.12, OS=Windows 7 SP1 (6.1.7601.0)
Intel Xeon CPU E3-1240 V2 3.40GHz, 1 CPU, 8 logical cores and 4 physical cores
Frequency=3312851 Hz, Resolution=301.8548 ns, Timer=TSC
[Host] : .NET Framework 4.6.1 (CLR 4.0.30319.42000), 64bit RyuJIT-v4.6.1076.0
Job-CLJHLJ : .NET Framework 4.6.1 (CLR 4.0.30319.42000), 64bit RyuJIT-v4.6.1076.0
UnrollFactor=1
Method | Version | Mean | Error | StdDev |
---|---|---|---|---|
ChildContainer | 4.0.1 | 606.6 ns | 8.0293 ns | 7.5106 ns |
ChildContainer | 5.6.1 | 250.5 ns | 2.6140 ns | 2.4451 ns |
ChildContainer | 5.7.1 | 131.0 ns | 1.0502 ns | 0.9310 ns |
Object | 4.0.1 | 1,263.6 ns | 18.4935 ns | 16.3940 ns |
Object | 5.6.1 | 794.7 ns | 5.4100 ns | 5.0605 ns |
Object | 5.7.1 | 165.4 ns | 3.3337 ns | 3.7054 ns |
Unregistered | 4.0.1 | 1,258.5 ns | 8.0816 ns | 7.5595 ns |
Unregistered | 5.6.1 | 818.7 ns | 12.8366 ns | 11.3793 ns |
Unregistered | 5.7.1 | 175.6 ns | 1.9537 ns | 1.8275 ns |
Transient | 4.0.1 | 1,264.0 ns | 3.9698 ns | 3.5192 ns |
Transient | 5.6.1 | 616.6 ns | 11.9444 ns | 13.7551 ns |
Transient | 5.7.1 | 178.0 ns | 1.2784 ns | 1.1958 ns |
MappedService | 4.0.1 | 1,361.7 ns | 6.2127 ns | 5.1879 ns |
MappedService | 5.6.1 | 1,004.2 ns | 9.6214 ns | 8.9998 ns |
MappedService | 5.7.1 | 177.9 ns | 2.3800 ns | 2.1098 ns |
ReResolve | 4.0.1 | 1,261.5 ns | 12.7684 ns | 11.9436 ns |
ReResolve | 5.6.1 | 1,061.6 ns | 5.1320 ns | 4.5494 ns |
ReResolve | 5.7.1 | 171.5 ns | 0.8011 ns | 0.6689 ns |
Singleton | 4.0.1 | 740.4 ns | 3.6187 ns | 3.3849 ns |
Singleton | 5.6.1 | 321.3 ns | 1.7380 ns | 1.6257 ns |
Singleton | 5.7.1 | 129.3 ns | 1.6182 ns | 1.4345 ns |
5.6.1.462
5.6.0.453
v5.6.0 introduces significant rework of v5.x (v4.x) engine.
- Storage
- Registration process and how individual registrations are stored
- Introduces preprocessing during registration stage
- Strategies
Benchmarks
BenchmarkDotNet=v0.10.12, OS=Windows 10 Redstone 3 [1709, Fall Creators Update] (10.0.16299.192)
Intel Core i7-6700K CPU 4.00GHz (Skylake), 1 CPU, 8 logical cores and 4 physical cores
Frequency=3914063 Hz, Resolution=255.4890 ns, Timer=TSC
[Host] : .NET Framework 4.6 (CLR 4.0.30319.42000), 64bit RyuJIT-v4.7.2600.0
DefaultJob : .NET Framework 4.6 (CLR 4.0.30319.42000), 64bit RyuJIT-v4.7.2600.0
Method | Container | Mean | Error | StdDev |
---|---|---|---|---|
Transient | 5.6.0 | 539.1 ns | 1.082 ns | 0.9596 ns |
Transient | 5.5.8 | 885.6 ns | 1.696 ns | 1.5861 ns |
Transient | 4.0.1 | 914.5 ns | 3.226 ns | 3.0180 ns |
typeof(object) | 5.6.0 | 538.9 ns | 1.547 ns | 1.371 ns |
typeof(object) | 5.5.8 | 893.3 ns | 4.676 ns | 4.374 ns |
typeof(object) | 4.0.1 | 920.4 ns | 8.112 ns | 7.588 ns |
Singleton | 5.6.0 | 551.4 ns | 8.130 ns | 7.207 ns |
Singleton | 5.5.8 | 924.4 ns | 7.126 ns | 6.317 ns |
Singleton | 4.0.1 | 917.4 ns | 6.567 ns | 6.143 ns |
5.5.8.450
5.5.6.448
5.5.5.427
5.5.4.424
5.5.3.421
5.5.2.419
Maintenance release
During production run it was determined that HierarchicalLifetimeManager could be corrupted and environment could became unstable. To fix the issue Dictionary<>
in HierarchicalLifetimeManager
implementation was replaced with ConcurrentDictionary<>
.