ImmutableHashDictionary 1.0.0
dotnet add package ImmutableHashDictionary --version 1.0.0
NuGet\Install-Package ImmutableHashDictionary -Version 1.0.0
<PackageReference Include="ImmutableHashDictionary" Version="1.0.0" />
<PackageVersion Include="ImmutableHashDictionary" Version="1.0.0" />
<PackageReference Include="ImmutableHashDictionary" />
paket add ImmutableHashDictionary --version 1.0.0
#r "nuget: ImmutableHashDictionary, 1.0.0"
#:package ImmutableHashDictionary@1.0.0
#addin nuget:?package=ImmutableHashDictionary&version=1.0.0
#tool nuget:?package=ImmutableHashDictionary&version=1.0.0
ImmutableHashDictionary
An implementation of IImmutableDictionary<TKey, TValue> that maintains O(1) value lookup, at the cost of mutation performance.
A good choice when working with dictionaries that remain moderately small and/or that are accessed for reading far more frequently than for modification.
This package also includes an ImmutableHashDictionary static factory class and an ImmutableHashDictionary<TKey, TValue>.Builder class that provide API''s identical to the ImmutableDictionary and ImmutableDictionary<TKey, TValue>.Builder classes.
Targets .NET Standard 2.0.
C#8 (Nullable Reference Types) Compliant.
Benchmarks
The following benchmarks demonstrate the performance advantages and disadvantages of the ImmutableHashDictionary<TKey, TValue> class over the Dictionary<TKey, TValue> and ImmutableDictionary<TKey, TValue> classes.
The performance of value lookup by key for ImmutableHashDictionary<TKey, TValue> is, as desired, on par with that of Dictionary<TKey, TValue> and far exceeds that of ImmutableDictionary<TKey, TValue>, even for very large collections.
The performance of single add and remove operations for ImmutableHashDictionary<TKey, TValue> is, as expected, comparable to that of ImmutableDictionary<TKey, TValue> for smaller collections, but does not scale well (O(N) vs O(log N)).
Interestingly, the performance of ranged add and remove operations for ImmutableHashDictionary<TKey, TValue> tends to far exceed that of ImmutableDictionary<TKey, TValue>, and tends to be comparable to that of Dictionary<TKey, TValue> suggesting that the performance costs of mutating an ImmutableHashDictionary can be mitigated by performing mutations in batches, as much as possible.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- System.Collections.Immutable (>= 1.5.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.0 | 6,189 | 1/21/2019 |
Initial release.