Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
146 changes: 77 additions & 69 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -113,78 +113,86 @@ See [ReadBenchmark](benchmarks/FSharp.HashCollections.Benchmarks.ReadBenchmarks-

BenchmarkDotNet=v0.13.1, OS=arch
AMD Ryzen 7 3700X, 1 CPU, 16 logical and 8 physical cores
.NET SDK=5.0.301
[Host] : .NET 5.0.7 (5.0.721.25508), X64 RyuJIT DEBUG
DefaultJob : .NET 5.0.7 (5.0.721.25508), X64 RyuJIT
.NET SDK=6.0.403
[Host] : .NET 6.0.11 (6.0.1122.52304), X64 RyuJIT DEBUG
DefaultJob : .NET 6.0.11 (6.0.1122.52304), X64 RyuJIT


```
| Method | CollectionSize | Mean | Error | StdDev |
|--------------------------------- |--------------- |------------:|---------:|---------:|
| **GetHashMap** | **10** | **11.27 ns** | **0.059 ns** | **0.052 ns** |
| GetImToolsHashMap | 10 | 30.78 ns | 0.573 ns | 0.508 ns |
| GetFSharpMap | 10 | 38.90 ns | 0.535 ns | 0.474 ns |
| GetFSharpXHashMap | 10 | 99.11 ns | 1.295 ns | 1.211 ns |
| GetSystemCollectionsImmutableMap | 10 | 22.65 ns | 0.201 ns | 0.178 ns |
| GetFSharpDataAdaptiveMap | 10 | 21.06 ns | 0.187 ns | 0.175 ns |
| GetFSharpxChampMap | 10 | 75.58 ns | 1.474 ns | 1.514 ns |
| **GetHashMap** | **100** | **15.27 ns** | **0.106 ns** | **0.099 ns** |
| GetImToolsHashMap | 100 | 44.76 ns | 0.770 ns | 0.824 ns |
| GetFSharpMap | 100 | 70.82 ns | 0.638 ns | 0.565 ns |
| GetFSharpXHashMap | 100 | 110.33 ns | 1.877 ns | 1.664 ns |
| GetSystemCollectionsImmutableMap | 100 | 34.41 ns | 0.377 ns | 0.353 ns |
| GetFSharpDataAdaptiveMap | 100 | 42.18 ns | 0.533 ns | 0.499 ns |
| GetFSharpxChampMap | 100 | 95.72 ns | 1.423 ns | 1.261 ns |
| **GetHashMap** | **1000** | **12.27 ns** | **0.086 ns** | **0.081 ns** |
| GetImToolsHashMap | 1000 | 66.92 ns | 0.676 ns | 0.565 ns |
| GetFSharpMap | 1000 | 110.07 ns | 2.190 ns | 2.689 ns |
| GetFSharpXHashMap | 1000 | 119.27 ns | 0.937 ns | 0.877 ns |
| GetSystemCollectionsImmutableMap | 1000 | 51.20 ns | 0.512 ns | 0.479 ns |
| GetFSharpDataAdaptiveMap | 1000 | 65.18 ns | 0.827 ns | 0.773 ns |
| GetFSharpxChampMap | 1000 | 96.31 ns | 1.018 ns | 0.902 ns |
| **GetHashMap** | **100000** | **27.10 ns** | **0.261 ns** | **0.244 ns** |
| GetImToolsHashMap | 100000 | 192.91 ns | 1.385 ns | 1.295 ns |
| GetFSharpMap | 100000 | 202.18 ns | 3.977 ns | 3.720 ns |
| GetFSharpXHashMap | 100000 | 142.92 ns | 1.867 ns | 1.655 ns |
| GetSystemCollectionsImmutableMap | 100000 | 143.54 ns | 1.211 ns | 1.133 ns |
| GetFSharpDataAdaptiveMap | 100000 | 138.09 ns | 1.176 ns | 1.100 ns |
| GetFSharpxChampMap | 100000 | 161.99 ns | 2.703 ns | 2.529 ns |
| **GetHashMap** | **500000** | **75.27 ns** | **0.464 ns** | **0.434 ns** |
| GetImToolsHashMap | 500000 | 503.84 ns | 4.429 ns | 3.926 ns |
| GetFSharpMap | 500000 | 319.49 ns | 6.054 ns | 5.663 ns |
| GetFSharpXHashMap | 500000 | 237.83 ns | 2.523 ns | 2.360 ns |
| GetSystemCollectionsImmutableMap | 500000 | 320.95 ns | 3.004 ns | 2.810 ns |
| GetFSharpDataAdaptiveMap | 500000 | 303.34 ns | 2.013 ns | 1.883 ns |
| GetFSharpxChampMap | 500000 | 169.03 ns | 1.864 ns | 1.744 ns |
| **GetHashMap** | **750000** | **108.07 ns** | **0.666 ns** | **0.623 ns** |
| GetImToolsHashMap | 750000 | 608.60 ns | 3.202 ns | 2.838 ns |
| GetFSharpMap | 750000 | 406.83 ns | 4.744 ns | 4.437 ns |
| GetFSharpXHashMap | 750000 | 351.69 ns | 1.921 ns | 1.797 ns |
| GetSystemCollectionsImmutableMap | 750000 | 409.93 ns | 2.075 ns | 1.941 ns |
| GetFSharpDataAdaptiveMap | 750000 | 351.97 ns | 1.888 ns | 1.766 ns |
| GetFSharpxChampMap | 750000 | 173.13 ns | 2.644 ns | 2.473 ns |
| **GetHashMap** | **1000000** | **114.22 ns** | **0.264 ns** | **0.247 ns** |
| GetImToolsHashMap | 1000000 | 678.73 ns | 5.430 ns | 5.080 ns |
| GetFSharpMap | 1000000 | 472.68 ns | 3.494 ns | 3.097 ns |
| GetFSharpXHashMap | 1000000 | 340.27 ns | 1.778 ns | 1.663 ns |
| GetSystemCollectionsImmutableMap | 1000000 | 468.81 ns | 4.030 ns | 3.770 ns |
| GetFSharpDataAdaptiveMap | 1000000 | 392.71 ns | 2.035 ns | 1.903 ns |
| GetFSharpxChampMap | 1000000 | 178.21 ns | 2.594 ns | 2.426 ns |
| **GetHashMap** | **5000000** | **146.63 ns** | **0.552 ns** | **0.516 ns** |
| GetImToolsHashMap | 5000000 | 1,095.06 ns | 4.782 ns | 4.473 ns |
| GetFSharpMap | 5000000 | 803.83 ns | 4.079 ns | 3.816 ns |
| GetFSharpXHashMap | 5000000 | 374.48 ns | 2.256 ns | 2.110 ns |
| GetSystemCollectionsImmutableMap | 5000000 | 775.52 ns | 5.161 ns | 4.828 ns |
| GetFSharpDataAdaptiveMap | 5000000 | 556.44 ns | 2.809 ns | 2.628 ns |
| GetFSharpxChampMap | 5000000 | 357.66 ns | 2.265 ns | 2.119 ns |
| **GetHashMap** | **10000000** | **163.68 ns** | **1.010 ns** | **0.944 ns** |
| GetImToolsHashMap | 10000000 | 1,317.78 ns | 6.694 ns | 5.934 ns |
| GetFSharpMap | 10000000 | 935.86 ns | 4.086 ns | 3.822 ns |
| GetFSharpXHashMap | 10000000 | 401.53 ns | 2.404 ns | 2.248 ns |
| GetSystemCollectionsImmutableMap | 10000000 | 909.51 ns | 2.906 ns | 2.576 ns |
| GetFSharpDataAdaptiveMap | 10000000 | 655.68 ns | 2.443 ns | 2.040 ns |
| GetFSharpxChampMap | 10000000 | 358.91 ns | 1.482 ns | 1.314 ns |

| Method | CollectionSize | Mean | Error | StdDev |
|--------------------------------- |--------------- |------------:|----------:|----------:|
| **GetHashMap** | **10** | **11.49 ns** | **0.091 ns** | **0.081 ns** |
| GetImToolsHashMap | 10 | 31.58 ns | 0.190 ns | 0.169 ns |
| GetFSharpMap | 10 | 26.97 ns | 0.208 ns | 0.194 ns |
| GetFSharpXHashMap | 10 | 129.21 ns | 0.806 ns | 0.754 ns |
| GetSystemCollectionsImmutableMap | 10 | 21.80 ns | 0.325 ns | 0.304 ns |
| GetFSharpDataAdaptiveMap | 10 | 22.95 ns | 0.234 ns | 0.219 ns |
| GetFSharpxChampMap | 10 | 72.75 ns | 0.439 ns | 0.367 ns |
| GetLangExtMap | 10 | 24.83 ns | 0.218 ns | 0.193 ns |
| **GetHashMap** | **100** | **11.75 ns** | **0.120 ns** | **0.112 ns** |
| GetImToolsHashMap | 100 | 44.99 ns | 0.358 ns | 0.317 ns |
| GetFSharpMap | 100 | 47.45 ns | 0.418 ns | 0.391 ns |
| GetFSharpXHashMap | 100 | 148.55 ns | 0.919 ns | 0.815 ns |
| GetSystemCollectionsImmutableMap | 100 | 33.26 ns | 0.246 ns | 0.230 ns |
| GetFSharpDataAdaptiveMap | 100 | 44.84 ns | 0.400 ns | 0.374 ns |
| GetFSharpxChampMap | 100 | 83.54 ns | 1.017 ns | 0.951 ns |
| GetLangExtMap | 100 | 31.26 ns | 0.264 ns | 0.247 ns |
| **GetHashMap** | **1000** | **11.67 ns** | **0.090 ns** | **0.084 ns** |
| GetImToolsHashMap | 1000 | 69.63 ns | 0.974 ns | 0.911 ns |
| GetFSharpMap | 1000 | 71.16 ns | 0.762 ns | 0.713 ns |
| GetFSharpXHashMap | 1000 | 161.89 ns | 0.539 ns | 0.450 ns |
| GetSystemCollectionsImmutableMap | 1000 | 49.93 ns | 0.489 ns | 0.458 ns |
| GetFSharpDataAdaptiveMap | 1000 | 67.05 ns | 0.725 ns | 0.678 ns |
| GetFSharpxChampMap | 1000 | 84.44 ns | 1.061 ns | 0.992 ns |
| GetLangExtMap | 1000 | 31.00 ns | 0.312 ns | 0.292 ns |
| **GetHashMap** | **100000** | **33.47 ns** | **0.376 ns** | **0.314 ns** |
| GetImToolsHashMap | 100000 | 216.79 ns | 4.285 ns | 4.009 ns |
| GetFSharpMap | 100000 | 177.11 ns | 2.074 ns | 1.940 ns |
| GetFSharpXHashMap | 100000 | 231.84 ns | 4.178 ns | 6.627 ns |
| GetSystemCollectionsImmutableMap | 100000 | 162.46 ns | 2.537 ns | 2.374 ns |
| GetFSharpDataAdaptiveMap | 100000 | 154.96 ns | 2.743 ns | 2.566 ns |
| GetFSharpxChampMap | 100000 | 114.73 ns | 1.243 ns | 1.163 ns |
| GetLangExtMap | 100000 | 61.52 ns | 0.609 ns | 0.570 ns |
| **GetHashMap** | **500000** | **35.67 ns** | **0.622 ns** | **0.582 ns** |
| GetImToolsHashMap | 500000 | 528.33 ns | 10.475 ns | 12.063 ns |
| GetFSharpMap | 500000 | 327.39 ns | 6.410 ns | 11.881 ns |
| GetFSharpXHashMap | 500000 | 336.89 ns | 5.012 ns | 4.688 ns |
| GetSystemCollectionsImmutableMap | 500000 | 359.41 ns | 7.174 ns | 11.787 ns |
| GetFSharpDataAdaptiveMap | 500000 | 324.83 ns | 6.091 ns | 5.982 ns |
| GetFSharpxChampMap | 500000 | 122.62 ns | 1.997 ns | 2.137 ns |
| GetLangExtMap | 500000 | 67.00 ns | 1.128 ns | 1.055 ns |
| **GetHashMap** | **750000** | **38.42 ns** | **0.513 ns** | **0.428 ns** |
| GetImToolsHashMap | 750000 | 639.63 ns | 12.341 ns | 14.691 ns |
| GetFSharpMap | 750000 | 429.89 ns | 8.344 ns | 10.247 ns |
| GetFSharpXHashMap | 750000 | 446.19 ns | 5.108 ns | 4.778 ns |
| GetSystemCollectionsImmutableMap | 750000 | 440.76 ns | 8.714 ns | 10.035 ns |
| GetFSharpDataAdaptiveMap | 750000 | 364.25 ns | 7.225 ns | 6.758 ns |
| GetFSharpxChampMap | 750000 | 128.73 ns | 2.571 ns | 3.848 ns |
| GetLangExtMap | 750000 | 72.10 ns | 1.426 ns | 1.334 ns |
| **GetHashMap** | **1000000** | **41.58 ns** | **0.804 ns** | **0.752 ns** |
| GetImToolsHashMap | 1000000 | 716.12 ns | 13.576 ns | 12.699 ns |
| GetFSharpMap | 1000000 | 478.64 ns | 9.391 ns | 11.877 ns |
| GetFSharpXHashMap | 1000000 | 426.63 ns | 4.339 ns | 4.059 ns |
| GetSystemCollectionsImmutableMap | 1000000 | 506.48 ns | 9.872 ns | 9.695 ns |
| GetFSharpDataAdaptiveMap | 1000000 | 395.59 ns | 5.966 ns | 5.581 ns |
| GetFSharpxChampMap | 1000000 | 132.05 ns | 2.585 ns | 4.319 ns |
| GetLangExtMap | 1000000 | 79.30 ns | 1.577 ns | 2.408 ns |
| **GetHashMap** | **5000000** | **155.94 ns** | **0.957 ns** | **0.799 ns** |
| GetImToolsHashMap | 5000000 | 1,138.25 ns | 18.869 ns | 17.650 ns |
| GetFSharpMap | 5000000 | 823.41 ns | 10.984 ns | 10.274 ns |
| GetFSharpXHashMap | 5000000 | 475.15 ns | 6.462 ns | 6.044 ns |
| GetSystemCollectionsImmutableMap | 5000000 | 826.09 ns | 15.213 ns | 14.230 ns |
| GetFSharpDataAdaptiveMap | 5000000 | 579.94 ns | 6.645 ns | 6.216 ns |
| GetFSharpxChampMap | 5000000 | 285.59 ns | 3.235 ns | 3.026 ns |
| GetLangExtMap | 5000000 | 234.92 ns | 3.571 ns | 3.341 ns |
| **GetHashMap** | **10000000** | **159.87 ns** | **2.199 ns** | **1.950 ns** |
| GetImToolsHashMap | 10000000 | 1,345.84 ns | 26.844 ns | 26.364 ns |
| GetFSharpMap | 10000000 | 957.82 ns | 14.825 ns | 13.868 ns |
| GetFSharpXHashMap | 10000000 | 509.87 ns | 9.244 ns | 8.647 ns |
| GetSystemCollectionsImmutableMap | 10000000 | 960.39 ns | 18.921 ns | 17.699 ns |
| GetFSharpDataAdaptiveMap | 10000000 | 672.11 ns | 9.232 ns | 8.636 ns |
| GetFSharpxChampMap | 10000000 | 291.37 ns | 3.615 ns | 3.381 ns |
| GetLangExtMap | 10000000 | 237.09 ns | 3.173 ns | 2.968 ns |

### Add on HashMap

Expand Down
Loading