Skip to content

OfArray

Georg Haaser edited this page Oct 20, 2019 · 2 revisions

creates a Map of size N using an array of random tuples.
Note that the table contains the overall times for creating the Map, 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 Gen 0 Gen 1 Gen 2 Allocated
HashMapOkasaki_ofArray 10 333.7 ns 8.820 ns 26.01 ns 0.8950 - - 704 B
ImTools_ofArray 10 1,146.3 ns 27.287 ns 80.03 ns 3.3760 - - 2656 B
FSharpMap_ofArray 10 1,400.5 ns 29.122 ns 84.95 ns 1.6670 - - 1312 B
HAMT_ofArray 10 629.3 ns 13.340 ns 38.91 ns 1.1587 - - 912 B
FSharpX_ofArray 10 5,712.4 ns 120.890 ns 356.45 ns 6.5536 - - 5160 B
ImmutableDictionary_ofArray 10 4,811.3 ns 108.943 ns 316.06 ns 2.9984 - - 2360 B
HashMapOkasaki_ofArray 20 746.0 ns 17.064 ns 50.04 ns 1.8101 - - 1424 B
ImTools_ofArray 20 3,086.0 ns 61.112 ns 157.75 ns 8.2779 - - 6512 B
FSharpMap_ofArray 20 4,582.8 ns 113.125 ns 333.55 ns 4.9286 - - 3880 B
HAMT_ofArray 20 2,264.3 ns 44.920 ns 114.34 ns 3.1815 - - 2504 B
FSharpX_ofArray 20 10,380.2 ns 206.618 ns 514.55 ns 11.3373 - - 8920 B
ImmutableDictionary_ofArray 20 12,783.8 ns 265.416 ns 770.02 ns 7.3395 - - 5784 B
HashMapOkasaki_ofArray 30 1,247.4 ns 24.752 ns 51.12 ns 2.7256 - - 2144 B
ImTools_ofArray 30 5,231.9 ns 111.492 ns 326.99 ns 13.6642 - - 10752 B
FSharpMap_ofArray 30 8,473.1 ns 194.740 ns 574.20 ns 8.7433 - - 6880 B
HAMT_ofArray 30 4,077.9 ns 92.447 ns 272.58 ns 5.3787 - - 4232 B
FSharpX_ofArray 30 15,119.6 ns 390.339 ns 1,150.92 ns 16.1133 - - 12680 B
ImmutableDictionary_ofArray 30 19,747.7 ns 451.255 ns 1,330.54 ns 12.1155 - - 9544 B
HashMapOkasaki_ofArray 40 1,725.8 ns 34.539 ns 93.97 ns 3.6411 - - 2864 B
ImTools_ofArray 40 7,509.3 ns 149.349 ns 257.62 ns 19.4244 - - 15280 B
FSharpMap_ofArray 40 12,271.7 ns 242.008 ns 551.18 ns 12.8632 - - 10120 B
HAMT_ofArray 40 5,724.8 ns 113.581 ns 320.36 ns 7.6981 - - 6056 B
FSharpX_ofArray 40 18,315.2 ns 421.387 ns 1,229.21 ns 18.2800 - - 14392 B
ImmutableDictionary_ofArray 40 28,009.0 ns 557.802 ns 1,325.68 ns 17.4561 - - 13752 B
HashMapOkasaki_ofArray 50 2,244.3 ns 50.648 ns 147.74 ns 4.5547 - - 3584 B
ImTools_ofArray 50 10,102.5 ns 232.411 ns 681.62 ns 25.4211 - - 20000 B
FSharpMap_ofArray 50 17,150.7 ns 401.301 ns 1,183.25 ns 17.2729 - - 13600 B
HAMT_ofArray 50 7,805.9 ns 219.603 ns 647.51 ns 10.1471 - - 7992 B
FSharpX_ofArray 50 21,349.2 ns 438.550 ns 1,286.19 ns 19.8059 - - 15592 B
ImmutableDictionary_ofArray 50 37,565.0 ns 797.769 ns 2,327.13 ns 22.9492 - - 18072 B
HashMapOkasaki_ofArray 100 4,930.2 ns 109.551 ns 321.30 ns 9.1324 - - 7184 B
ImTools_ofArray 100 24,345.2 ns 545.505 ns 1,608.43 ns 57.4951 - - 45232 B
FSharpMap_ofArray 100 42,131.2 ns 952.162 ns 2,792.53 ns 41.3818 - - 32584 B
HAMT_ofArray 100 20,160.2 ns 451.072 ns 1,315.80 ns 25.5127 - - 20072 B
FSharpX_ofArray 100 41,087.2 ns 820.229 ns 2,418.47 ns 33.6304 - - 26456 B
ImmutableDictionary_ofArray 100 86,810.6 ns 1,723.929 ns 5,028.78 ns 52.9785 - - 41688 B
HashMapOkasaki_ofArray 200 10,873.3 ns 215.538 ns 600.83 ns 18.2800 - - 14384 B
ImTools_ofArray 200 61,086.0 ns 1,494.010 ns 4,334.40 ns 127.8076 - - 100592 B
FSharpMap_ofArray 200 101,546.3 ns 2,157.470 ns 6,327.48 ns 95.9473 - - 75496 B
HAMT_ofArray 200 50,142.1 ns 1,021.904 ns 3,013.11 ns 59.6924 - - 46952 B
FSharpX_ofArray 200 80,562.8 ns 1,911.544 ns 5,606.23 ns 60.4248 - - 47608 B
ImmutableDictionary_ofArray 200 198,655.1 ns 3,990.493 ns 11,640.46 ns 120.1172 - - 94520 B
HashMapOkasaki_ofArray 300 17,837.7 ns 420.350 ns 1,232.82 ns 27.4353 - - 21584 B
ImTools_ofArray 300 101,437.7 ns 2,089.930 ns 6,162.20 ns 195.4346 4.3945 - 159408 B
FSharpMap_ofArray 300 169,758.2 ns 3,588.321 ns 10,523.93 ns 154.7852 - - 121864 B
HAMT_ofArray 300 82,670.4 ns 1,652.396 ns 4,846.19 ns 95.7031 - - 75304 B
FSharpX_ofArray 300 255,884.4 ns 5,775.499 ns 17,029.19 ns 72.7539 18.5547 - 153368 B
ImmutableDictionary_ofArray 300 343,556.3 ns 7,082.098 ns 20,770.57 ns 192.3828 - - 151384 B
HashMapOkasaki_ofArray 400 26,879.9 ns 533.966 ns 1,090.75 ns 30.9448 3.4180 - 28784 B
ImTools_ofArray 400 163,176.7 ns 3,262.247 ns 9,618.81 ns 215.5762 28.5645 - 221008 B
FSharpMap_ofArray 400 243,612.0 ns 5,430.580 ns 15,926.95 ns 217.2852 - - 171064 B
HAMT_ofArray 400 115,436.4 ns 2,305.676 ns 6,074.07 ns 133.3008 - - 104872 B
FSharpX_ofArray 400 340,061.7 ns 6,706.970 ns 16,702.68 ns 71.7773 22.9492 - 190968 B
ImmutableDictionary_ofArray 400 492,502.6 ns 11,320.574 ns 32,843.04 ns 268.5547 - - 211384 B
HashMapOkasaki_ofArray 500 36,922.7 ns 903.338 ns 2,649.33 ns 34.3628 4.5166 - 35984 B
ImTools_ofArray 500 220,924.4 ns 4,357.109 ns 9,745.30 ns 228.2715 38.5742 - 282608 B
FSharpMap_ofArray 500 318,386.3 ns 7,075.395 ns 20,861.96 ns 279.7852 - - 220264 B
HAMT_ofArray 500 150,166.2 ns 3,726.442 ns 10,929.01 ns 172.3633 - - 135688 B
FSharpX_ofArray 500 321,930.6 ns 7,064.183 ns 20,718.03 ns 77.6367 25.8789 - 228568 B
ImmutableDictionary_ofArray 500 627,549.8 ns 14,372.162 ns 42,376.64 ns 298.8281 25.3906 - 271384 B
HashMapOkasaki_ofArray 1000 89,144.5 ns 1,795.874 ns 5,295.18 ns 35.4004 8.6670 - 71984 B
ImTools_ofArray 1000 498,151.6 ns 9,884.557 ns 21,903.50 ns 263.6719 70.3125 - 613936 B
FSharpMap_ofArray 1000 774,388.3 ns 15,390.068 ns 41,869.81 ns 459.9609 73.2422 - 489544 B
HAMT_ofArray 1000 394,965.1 ns 9,228.560 ns 27,065.77 ns 333.9844 31.2500 - 315432 B
FSharpX_ofArray 1000 746,940.9 ns 14,577.038 ns 23,539.20 ns 82.0313 38.0859 - 416568 B
ImmutableDictionary_ofArray 1000 1,339,096.7 ns 33,978.509 ns 99,653.09 ns 396.4844 80.0781 - 598712 B
HashMapOkasaki_ofArray 2000 194,810.6 ns 3,844.780 ns 9,358.73 ns 34.6680 11.7188 - 143984 B
ImTools_ofArray 2000 1,183,959.0 ns 23,507.162 ns 55,867.26 ns 291.0156 109.3750 - 1324688 B
FSharpMap_ofArray 2000 1,919,464.3 ns 49,738.271 ns 145,088.87 ns 523.4375 125.0000 - 1076248 B
HAMT_ofArray 2000 859,645.1 ns 16,999.248 ns 36,592.67 ns 563.4766 94.7266 - 694952 B
FSharpX_ofArray 2000 1,112,836.7 ns 23,296.590 ns 68,690.52 ns 95.7031 46.8750 - 542712 B
ImmutableDictionary_ofArray 2000 2,972,018.3 ns 58,996.677 ns 170,218.90 ns 441.4063 132.8125 - 1309368 B
HashMapOkasaki_ofArray 3000 277,587.5 ns 6,694.348 ns 19,738.44 ns 41.5039 17.5781 - 215984 B
ImTools_ofArray 3000 1,747,469.4 ns 34,681.574 ns 88,902.13 ns 345.7031 166.0156 - 2082288 B
FSharpMap_ofArray 3000 3,025,822.5 ns 60,028.363 ns 125,301.55 ns 601.5625 175.7813 3.9063 1709800 B
HAMT_ofArray 3000 1,375,307.1 ns 28,244.092 ns 83,278.34 ns 728.5156 142.5781 - 1090088 B
FSharpX_ofArray 3000 1,583,869.9 ns 37,088.818 ns 108,189.82 ns 128.9063 64.4531 - 807416 B
ImmutableDictionary_ofArray 3000 4,822,769.2 ns 120,620.957 ns 346,084.14 ns 492.1875 164.0625 - 2074680 B
HashMapOkasaki_ofArray 4000 360,940.9 ns 7,186.647 ns 20,152.13 ns 47.3633 23.4375 - 287984 B
ImTools_ofArray 4000 2,333,039.3 ns 54,414.147 ns 158,728.62 ns 457.0313 226.5625 - 2842288 B
FSharpMap_ofArray 4000 3,963,280.1 ns 78,880.027 ns 226,321.58 ns 640.6250 199.2188 23.4375 2345800 B
HAMT_ofArray 4000 1,823,275.1 ns 36,195.044 ns 98,471.29 ns 832.0313 197.2656 - 1500840 B
FSharpX_ofArray 4000 2,071,441.3 ns 48,387.557 ns 140,381.08 ns 152.3438 74.2188 - 938360 B
ImmutableDictionary_ofArray 4000 6,478,469.5 ns 129,250.249 ns 362,431.56 ns 554.6875 210.9375 - 2842680 B
HashMapOkasaki_ofArray 5000 450,552.2 ns 8,982.841 ns 25,188.85 ns 57.6172 28.8086 - 359984 B
ImTools_ofArray 5000 3,328,499.5 ns 67,105.899 ns 197,863.26 ns 585.9375 289.0625 11.7188 3645584 B
FSharpMap_ofArray 5000 5,038,893.7 ns 99,921.833 ns 289,891.36 ns 781.2500 210.9375 39.0625 3025048 B
HAMT_ofArray 5000 2,539,096.8 ns 50,616.541 ns 139,412.65 ns 761.7188 218.7500 - 1960232 B
FSharpX_ofArray 5000 2,801,292.7 ns 60,512.065 ns 178,421.19 ns 199.2188 97.6563 - 1253624 B
ImmutableDictionary_ofArray 5000 8,395,117.5 ns 213,379.072 ns 629,153.01 ns 656.2500 296.8750 - 3661304 B
HashMapOkasaki_ofArray 10000 1,078,729.8 ns 24,869.717 ns 72,546.13 ns 115.2344 56.6406 - 719984 B
ImTools_ofArray 10000 8,539,195.1 ns 169,775.051 ns 379,726.23 ns 1250.0000 234.3750 93.7500 7772272 B
FSharpMap_ofArray 10000 10,243,045.2 ns 209,786.913 ns 611,958.27 ns 5031.2500 125.0000 46.8750 6531688 B
HAMT_ofArray 10000 5,704,253.6 ns 113,931.711 ns 309,959.62 ns 726.5625 351.5625 - 4313256 B
FSharpX_ofArray 10000 17,789,596.3 ns 354,502.914 ns 862,909.09 ns 843.7500 312.5000 125.0000 5053944 B
ImmutableDictionary_ofArray 10000 18,190,463.3 ns 503,518.300 ns 1,476,732.01 ns 1343.7500 218.7500 62.5000 7882552 B
HashMapOkasaki_ofArray 20000 2,972,760.1 ns 59,133.676 ns 147,263.37 ns 230.4688 113.2813 - 1439984 B
ImTools_ofArray 20000 18,602,421.6 ns 378,595.698 ns 1,116,297.96 ns 2781.2500 406.2500 125.0000 16505746 B
FSharpMap_ofArray 20000 23,204,276.6 ns 463,373.095 ns 1,236,836.59 ns 11468.7500 187.5000 62.5000 14025112 B
HAMT_ofArray 20000 12,344,536.7 ns 246,424.962 ns 707,039.41 ns 1531.2500 515.6250 93.7500 9203880 B
FSharpX_ofArray 20000 35,627,159.3 ns 710,974.478 ns 1,909,986.77 ns 1571.4286 642.8571 214.2857 8813945 B
ImmutableDictionary_ofArray 20000 39,179,131.1 ns 1,040,646.354 ns 3,035,614.26 ns 2928.5714 357.1429 71.4286 16885051 B
HashMapOkasaki_ofArray 30000 5,491,244.2 ns 109,338.611 ns 130,159.84 ns 343.7500 171.8750 - 2159984 B
ImTools_ofArray 30000 30,500,397.2 ns 601,724.763 ns 1,115,335.43 ns 4281.2500 593.7500 187.5000 25545746 B
FSharpMap_ofArray 30000 35,638,855.4 ns 901,944.596 ns 2,659,403.99 ns 19533.3333 466.6667 133.3333 21825115 B
HAMT_ofArray 30000 18,937,362.0 ns 385,918.288 ns 1,131,831.53 ns 2343.7500 625.0000 125.0000 14294056 B
FSharpX_ofArray 30000 56,430,942.0 ns 1,124,883.822 ns 2,246,514.54 ns 2200.0000 800.0000 200.0000 12573950 B
ImmutableDictionary_ofArray 30000 59,746,984.0 ns 1,291,458.163 ns 3,767,244.08 ns 4444.4444 333.3333 - 26245048 B

Clone this wiki locally