Skip to content
Georg Haaser edited this page Oct 20, 2019 · 4 revisions

adds N non-existing random elements to a random Map of size N (so the final size is 2*N).
Note that the table contains the overall times for adding all keys, but the plot shows the average time per element.

Chart

BenchmarkDotNet=v0.11.5, OS=Windows 10.0.17763.805 (1809/October2018Update/Redstone5)
AMD Ryzen Threadripper 2950X, 1 CPU, 32 logical and 16 physical cores
.NET Core SDK=3.0.100
  [Host]     : .NET Core 2.1.13 (CoreCLR 4.6.28008.01, CoreFX 4.6.28008.01), 64bit RyuJIT DEBUG
  Job-PHBEOK : .NET Core 2.1.13 (CoreCLR 4.6.28008.01, CoreFX 4.6.28008.01), 64bit RyuJIT

MaxIterationCount=100  
Method N Mean Error StdDev Median Gen 0 Gen 1 Gen 2 Allocated
HashMapOkasaki_add 10 1.012 us 0.0312 us 0.0919 us 1.010 us 2.6951 - - 2.07 KB
ImTools_add 10 1.524 us 0.0306 us 0.0888 us 1.537 us 4.2305 - - 3.25 KB
FSharpMap_add 10 2.884 us 0.0617 us 0.1809 us 2.913 us 3.2234 - - 2.48 KB
HAMT_add 10 1.477 us 0.0296 us 0.0874 us 1.469 us 1.9722 - - 1.52 KB
FSharpX_add 10 5.593 us 0.1271 us 0.3746 us 5.577 us 9.2087 - - 7.08 KB
ImmutableDictionary_add 10 7.029 us 0.1544 us 0.4528 us 6.993 us 4.2801 - - 3.29 KB
HashMapOkasaki_add 20 2.599 us 0.0665 us 0.1962 us 2.599 us 6.6605 - - 5.12 KB
ImTools_add 20 4.560 us 0.0984 us 0.2885 us 4.532 us 11.0855 - - 8.52 KB
FSharpMap_add 20 7.316 us 0.1979 us 0.5834 us 7.257 us 7.5378 - - 5.8 KB
HAMT_add 20 3.887 us 0.0783 us 0.2309 us 3.878 us 4.6272 - - 3.55 KB
FSharpX_add 20 10.652 us 0.2617 us 0.7717 us 10.625 us 17.2424 - - 13.25 KB
ImmutableDictionary_add 20 16.396 us 0.4617 us 1.3540 us 16.130 us 9.7656 - - 7.51 KB
HashMapOkasaki_add 30 4.265 us 0.0848 us 0.2097 us 4.243 us 11.1351 - - 8.55 KB
ImTools_add 30 7.366 us 0.1974 us 0.5757 us 7.465 us 17.4408 - - 13.41 KB
FSharpMap_add 30 12.652 us 0.2780 us 0.8198 us 12.523 us 13.0463 - - 10.03 KB
HAMT_add 30 6.274 us 0.1394 us 0.4109 us 6.282 us 7.7438 - - 5.95 KB
FSharpX_add 30 15.892 us 0.3169 us 0.7713 us 15.836 us 26.5350 - - 20.39 KB
ImmutableDictionary_add 30 26.807 us 0.5779 us 1.6950 us 26.558 us 16.4490 - - 12.66 KB
HashMapOkasaki_add 40 6.089 us 0.1208 us 0.3140 us 6.097 us 15.3580 - - 11.8 KB
ImTools_add 40 9.056 us 0.2430 us 0.7165 us 8.952 us 22.4152 - - 17.22 KB
FSharpMap_add 40 17.949 us 0.4106 us 1.1978 us 17.899 us 18.1885 - - 13.98 KB
HAMT_add 40 9.309 us 0.2440 us 0.7196 us 9.177 us 10.8948 - - 8.38 KB
FSharpX_add 40 22.730 us 0.4930 us 1.4537 us 22.498 us 35.1257 - - 26.99 KB
ImmutableDictionary_add 40 38.636 us 0.8612 us 2.5257 us 38.638 us 23.4375 - - 18.02 KB
HashMapOkasaki_add 50 8.182 us 0.2107 us 0.6179 us 8.226 us 20.2789 - - 15.59 KB
ImTools_add 50 13.400 us 0.2774 us 0.8180 us 13.518 us 31.2195 - - 23.98 KB
FSharpMap_add 50 24.513 us 0.5547 us 1.6354 us 24.742 us 24.7498 - - 19.02 KB
HAMT_add 50 12.244 us 0.2631 us 0.7717 us 12.279 us 14.4196 - - 11.08 KB
FSharpX_add 50 27.399 us 0.5456 us 1.5741 us 27.406 us 43.5181 - - 33.45 KB
ImmutableDictionary_add 50 50.104 us 0.9920 us 2.7488 us 49.599 us 30.0903 - - 23.12 KB
HashMapOkasaki_add 100 19.263 us 0.4364 us 1.2730 us 19.143 us 45.1355 - - 34.69 KB
ImTools_add 100 30.803 us 0.6127 us 1.6978 us 30.831 us 67.7490 - - 52.05 KB
FSharpMap_add 100 58.529 us 1.2325 us 2.7312 us 58.429 us 57.6782 - - 44.34 KB
HAMT_add 100 31.699 us 0.8524 us 2.4999 us 31.889 us 33.6304 - - 25.86 KB
FSharpX_add 100 62.523 us 1.4044 us 4.1189 us 61.968 us 95.9473 - - 73.78 KB
ImmutableDictionary_add 100 115.347 us 2.3739 us 5.7332 us 116.065 us 69.2139 - - 53.23 KB
HashMapOkasaki_add 200 44.727 us 1.1153 us 3.2884 us 44.310 us 100.6470 - - 77.3 KB
ImTools_add 200 71.522 us 1.7867 us 5.2680 us 71.165 us 154.5410 - - 118.77 KB
FSharpMap_add 200 133.413 us 2.6567 us 6.5168 us 134.428 us 129.5166 - - 99.52 KB
HAMT_add 200 73.076 us 1.6481 us 4.8336 us 73.143 us 76.0498 - - 58.43 KB
FSharpX_add 200 148.562 us 3.9804 us 11.6109 us 146.323 us 213.8672 - - 164.37 KB
ImmutableDictionary_add 200 258.249 us 6.5231 us 19.1311 us 255.898 us 153.8086 - - 118.5 KB
HashMapOkasaki_add 300 71.183 us 1.5510 us 4.4502 us 70.996 us 159.7900 - - 122.73 KB
ImTools_add 300 113.147 us 2.2572 us 5.7861 us 113.454 us 237.9150 - - 182.81 KB
FSharpMap_add 300 218.828 us 4.3548 us 11.7733 us 219.812 us 203.8574 - - 156.68 KB
HAMT_add 300 122.776 us 3.4028 us 9.9797 us 121.762 us 121.5820 - - 93.5 KB
FSharpX_add 300 248.861 us 6.1344 us 17.9912 us 249.827 us 365.7227 - - 280.96 KB
ImmutableDictionary_add 300 403.187 us 8.7448 us 25.6468 us 404.338 us 240.7227 - - 185.02 KB
HashMapOkasaki_add 400 102.838 us 2.0992 us 6.1894 us 102.947 us 221.0693 - - 169.8 KB
ImTools_add 400 177.985 us 4.3821 us 12.9206 us 177.387 us 324.2188 4.1504 - 250.89 KB
FSharpMap_add 400 307.493 us 7.2066 us 20.5609 us 305.613 us 288.0859 - - 221.5 KB
HAMT_add 400 171.732 us 3.7605 us 11.0878 us 170.790 us 170.1660 - - 130.86 KB
FSharpX_add 400 359.624 us 8.3500 us 24.4891 us 360.298 us 446.2891 24.9023 - 399.34 KB
ImmutableDictionary_add 400 575.025 us 12.8137 us 37.5805 us 573.238 us 334.9609 - - 257.95 KB
HashMapOkasaki_add 500 137.711 us 3.4610 us 10.2049 us 138.640 us 278.0762 5.3711 - 220.04 KB
ImTools_add 500 237.092 us 4.7326 us 12.3845 us 237.759 us 358.8867 24.6582 - 316.11 KB
FSharpMap_add 500 411.694 us 8.6658 us 24.2997 us 407.998 us 377.9297 - - 290.33 KB
HAMT_add 500 231.496 us 4.6071 us 12.2972 us 232.952 us 220.7031 - - 169.69 KB
FSharpX_add 500 488.868 us 12.3109 us 36.2989 us 492.406 us 495.1172 59.5703 - 504.02 KB
ImmutableDictionary_add 500 715.271 us 14.2333 us 41.5192 us 716.849 us 420.8984 4.8828 - 326.44 KB
HashMapOkasaki_add 1000 404.470 us 7.9740 us 17.8350 us 408.085 us 416.9922 53.7109 - 474.69 KB
ImTools_add 1000 654.270 us 13.0008 us 34.2492 us 654.570 us 613.2813 69.3359 - 696.11 KB
FSharpMap_add 1000 1,006.865 us 26.6245 us 78.0852 us 994.139 us 771.4844 46.8750 - 651.09 KB
HAMT_add 1000 528.517 us 13.8839 us 40.7190 us 525.323 us 482.4219 5.8594 - 373.18 KB
FSharpX_add 1000 1,266.496 us 24.7672 us 47.1221 us 1,280.053 us 621.0938 119.1406 - 1007.02 KB
ImmutableDictionary_add 1000 1,685.591 us 34.0904 us 100.5163 us 1,689.170 us 708.9844 74.2188 - 715.6 KB
HashMapOkasaki_add 2000 963.993 us 23.7614 us 70.0609 us 983.599 us 474.6094 117.1875 - 1027.15 KB
ImTools_add 2000 1,704.098 us 27.1355 us 25.3826 us 1,707.880 us 666.0156 171.8750 - 1523.09 KB
FSharpMap_add 2000 2,431.532 us 57.3639 us 169.1388 us 2,422.623 us 1019.5313 179.6875 - 1415.91 KB
HAMT_add 2000 1,250.773 us 32.1323 us 93.7315 us 1,255.617 us 658.2031 101.5625 - 809.79 KB
FSharpX_add 2000 2,480.542 us 59.4479 us 175.2834 us 2,500.446 us 753.9063 214.8438 - 2058.06 KB
ImmutableDictionary_add 2000 3,981.685 us 79.2437 us 219.5840 us 3,954.694 us 863.2813 175.7813 - 1551.02 KB
HashMapOkasaki_add 3000 1,561.463 us 30.9333 us 72.3056 us 1,577.195 us 597.6563 164.0625 - 1616.48 KB
ImTools_add 3000 2,456.859 us 49.0938 us 70.4088 us 2,470.351 us 699.2188 210.9375 - 2341.69 KB
FSharpMap_add 3000 3,966.472 us 98.3332 us 289.9377 us 4,055.150 us 1335.9375 250.0000 - 2222.6 KB
HAMT_add 3000 2,067.374 us 41.0893 us 106.7965 us 2,064.181 us 748.0469 160.1563 - 1273.2 KB
FSharpX_add 3000 4,092.719 us 81.1068 us 189.5845 us 4,117.084 us 945.3125 289.0625 - 3180.09 KB
ImmutableDictionary_add 3000 6,631.855 us 130.8450 us 308.4171 us 6,666.262 us 1023.4375 273.4375 - 2465.69 KB
HashMapOkasaki_add 4000 2,156.157 us 42.8923 us 118.1377 us 2,200.100 us 625.0000 199.2188 - 2218.67 KB
ImTools_add 4000 3,380.970 us 71.9847 us 212.2485 us 3,458.485 us 695.3125 285.1563 - 3183.91 KB
FSharpMap_add 4000 5,469.565 us 108.4541 us 318.0770 us 5,482.283 us 1546.8750 320.3125 - 3063.7 KB
HAMT_add 4000 3,049.096 us 60.1418 us 126.8595 us 3,049.093 us 757.8125 191.4063 - 1759.59 KB
FSharpX_add 4000 5,990.162 us 117.9745 us 275.7616 us 6,059.951 us 1140.6250 406.2500 - 4362.21 KB
ImmutableDictionary_add 4000 8,694.301 us 211.2182 us 622.7815 us 8,692.771 us 1312.5000 312.5000 - 3386.04 KB
HashMapOkasaki_add 5000 2,772.531 us 54.0859 us 96.1376 us 2,786.951 us 753.9063 250.0000 - 2837.54 KB
ImTools_add 5000 4,731.210 us 94.1044 us 128.8112 us 4,764.197 us 1054.6875 367.1875 - 4103.19 KB
FSharpMap_add 5000 7,365.993 us 145.3227 us 345.3749 us 7,402.207 us 1812.5000 406.2500 - 3915.73 KB
HAMT_add 5000 4,112.532 us 94.3544 us 278.2061 us 4,098.350 us 804.6875 226.5625 - 2254.26 KB
FSharpX_add 5000 7,924.365 us 155.8780 us 153.0930 us 7,926.107 us 1320.3125 445.3125 - 5620.8 KB
ImmutableDictionary_add 5000 12,046.620 us 240.0334 us 692.5513 us 12,174.098 us 1234.3750 375.0000 - 4286.48 KB
HashMapOkasaki_add 10000 6,354.909 us 126.2549 us 358.1643 us 6,419.259 us 1031.2500 492.1875 - 6066.95 KB
ImTools_add 10000 10,545.883 us 209.6423 us 533.6067 us 10,621.252 us 1781.2500 578.1250 - 8744.55 KB
FSharpMap_add 10000 15,144.125 us 302.7238 us 823.5825 us 15,292.680 us 2859.3750 437.5000 - 8551.73 KB
HAMT_add 10000 8,669.164 us 215.5474 us 635.5465 us 8,751.884 us 1187.5000 406.2500 - 4840.97 KB
FSharpX_add 10000 19,161.524 us 379.4465 us 1,025.8557 us 19,311.434 us 2156.2500 812.5000 - 12838.59 KB
ImmutableDictionary_add 10000 22,244.030 us 538.5619 us 1,587.9619 us 22,411.998 us 2031.2500 437.5000 - 9159.88 KB
HashMapOkasaki_add 20000 14,874.145 us 314.6670 us 927.8027 us 14,999.247 us 2250.0000 656.2500 - 12912.5 KB
ImTools_add 20000 23,850.051 us 474.1987 us 1,224.0582 us 23,783.505 us 3156.2500 656.2500 31.2500 18535.95 KB
FSharpMap_add 20000 32,642.683 us 652.4636 us 1,775.0752 us 32,664.827 us 3937.5000 406.2500 - 18505.77 KB
HAMT_add 20000 20,659.510 us 412.5617 us 905.5829 us 20,748.655 us 2031.2500 875.0000 - 10351.55 KB
FSharpX_add 20000 46,818.038 us 1,045.2323 us 3,065.4854 us 46,996.727 us 4545.4545 1000.0000 90.9091 26957.97 KB
ImmutableDictionary_add 20000 49,462.151 us 1,257.1244 us 3,706.6597 us 49,557.975 us 3333.3333 416.6667 - 19325.45 KB
HashMapOkasaki_add 30000 24,478.956 us 482.7587 us 1,028.7982 us 24,641.863 us 3687.5000 562.5000 31.2500 20052.66 KB
ImTools_add 30000 36,879.269 us 858.4049 us 2,531.0263 us 37,063.896 us 5384.6154 769.2308 - 28576.45 KB
FSharpMap_add 30000 49,187.873 us 1,168.5922 us 3,427.2786 us 49,155.440 us 6300.0000 500.0000 - 28395.54 KB
HAMT_add 30000 33,887.705 us 828.7185 us 2,443.4952 us 34,114.513 us 2933.3333 1200.0000 - 16124.7 KB
FSharpX_add 30000 77,387.448 us 1,827.4062 us 5,388.1485 us 77,492.236 us 6857.1429 1285.7143 142.8571 40399.29 KB
ImmutableDictionary_add 30000 75,785.164 us 2,000.0250 us 5,865.7271 us 75,286.429 us 6142.8571 571.4286 - 30447.24 KB

Clone this wiki locally