-
Notifications
You must be signed in to change notification settings - Fork 0
Add
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.
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 |
