Performance.md
** Machine spec **
BenchmarkDotNet=v0.11.5, OS=Windows 10.0.17134.1184 (1803/April2018Update/Redstone4)
Intel Core i5-3470 CPU 3.20GHz (Ivy Bridge), 1 CPU, 4 logical and 4 physical cores
Frequency=3117923 Hz, Resolution=320.7263 ns, Timer=TSC
.NET Core SDK=3.1.100
[Host] : .NET Core 3.0.1 (CoreCLR 4.700.19.51502, CoreFX 4.700.19.51609), 64bit RyuJIT
DefaultJob : .NET Core 3.0.1 (CoreCLR 4.700.19.51502, CoreFX 4.700.19.51609), 64bit RyuJIT
References to Sys.Coll.Imm are Microsoft's ImmutableCollections library.
Sys.Coll.Imm.List is System.Collections.Immutable.ImmutableListSys.Coll.Imm.Dictionary is System.Collections.Immutable.ImmutableDictionarySys.Coll.Imm.SortedDictionary is System.Collections.Immutable.ImmutableSortedDictionarySys.Coll.Imm.SortedSet is System.Collections.Immutable.ImmutableSortedSet| Type | N | Add | RandomAccess | Iteration |
|---|---|---|---|---|
Sys.Coll.Imm.List | 100 | 20 us | 6,016 ns | 1,021 ns |
Sys.Coll.Imm.List | 1000 | 342 us | 62,300 ns | 32,942 ns |
Sys.Coll.Imm.List | 10000 | 5,942 us | 605,456 ns | 443,482 ns |
Sys.Coll.Imm.List | 100000 | 87,089 us | 8,154,876 ns | 6,146,402 ns |
LanguageExt.Lst | 100 | 17 us | 1,386 ns | 1,213 ns |
LanguageExt.Lst | 1000 | 273 us | 13,455 ns | 35,304 ns |
LanguageExt.Lst | 10000 | 5,341 us | 137,278 ns | 471,614 ns |
LanguageExt.Lst | 100000 | 62,340 us | 1,696,505 ns | 6,195,590 ns |
LanguageExt.Seq | 100 | 2 us | 638 ns | 359 ns |
LanguageExt.Seq | 1000 | 17 us | 6,194 ns | 3,518 ns |
LanguageExt.Seq | 10000 | 205 us | 61,358 ns | 35,117 ns |
LanguageExt.Seq | 100000 | 1,879 us | 613,746 ns | 351,036 ns |
| Type | N | Add | RandomAccess | Iteration |
|---|---|---|---|---|
Sys.Coll.Imm.List | 100 | 22 us | 10,652 ns | 1,013 ns |
Sys.Coll.Imm.List | 1000 | 357 us | 105,946 ns | 33,410 ns |
Sys.Coll.Imm.List | 10000 | 6,237 us | 1,069,881 ns | 448,148 ns |
Sys.Coll.Imm.List | 100000 | 83,450 us | 13,386,415 ns | 6,260,259 ns |
LanguageExt.Lst | 100 | 24 us | 1,547 ns | 3,561 ns |
LanguageExt.Lst | 1000 | 349 us | 14,446 ns | 56,720 ns |
LanguageExt.Lst | 10000 | 6,240 us | 148,034 ns | 747,441 ns |
LanguageExt.Lst | 100000 | 75,870 us | 1,986,228 ns | 9,194,727 ns |
LanguageExt.Seq | 100 | 3 us | 888 ns | 856 ns |
LanguageExt.Seq | 1000 | 28 us | 8,489 ns | 8,537 ns |
LanguageExt.Seq | 10000 | 367 us | 84,479 ns | 85,092 ns |
LanguageExt.Seq | 100000 | 4,463 us | 856,149 ns | 853,446 ns |
| Type | N | Add | ContainsKey | Iterate | RandomRemoval |
|---|---|---|---|---|---|
Sys.Coll.Imm.Dictionary | 100 | 69 us | 2,348 ns | 10,647 ns | 49,871 ns |
Sys.Coll.Imm.Dictionary | 1000 | 1,125 us | 60,126 ns | 118,251 ns | 894,815 ns |
Sys.Coll.Imm.Dictionary | 10000 | 17,785 us | 958,715 ns | 1,164,131 ns | 13,768,680 ns |
Sys.Coll.Imm.Dictionary | 100000 | 298,988 us | 17,859,368 ns | 13,715,622 ns | 242,798,528 ns |
LanguageExt.HashMap | 100 | 15 us | 2,042 ns | 3,579 ns | 14,065 ns |
LanguageExt.HashMap | 1000 | 245 us | 27,338 ns | 38,108 ns | 231,652 ns |
LanguageExt.HashMap | 10000 | 5,023 us | 354,385 ns | 459,233 ns | 3,810,743 ns |
LanguageExt.HashMap | 100000 | 92,372 us | 7,196,852 ns | 7,432,346 ns | 77,218,736 ns |
| Type | N | Add | ContainsKey | Iterate | RandomRemoval |
|---|---|---|---|---|---|
Sys.Coll.Imm.Dictionary | 100 | 90 us | 6 us | 20,352 ns | 67 us |
Sys.Coll.Imm.Dictionary | 1000 | 1,481 us | 104 us | 202,502 ns | 1,085 us |
Sys.Coll.Imm.Dictionary | 10000 | 23,336 us | 1,504 us | 2,076,426 ns | 17,480 us |
Sys.Coll.Imm.Dictionary | 100000 | 390,738 us | 28,854 us | 26,252,578 ns | 291,299 us |
LanguageExt.HashMap | 100 | 27 us | 5 us | 5,394 ns | 24 us |
LanguageExt.HashMap | 1000 | 404 us | 74 us | 62,036 ns | 364 us |
LanguageExt.HashMap | 10000 | 7,080 us | 859 us | 755,971 ns | 5,773 us |
LanguageExt.HashMap | 100000 | 138,283 us | 17,573 us | 12,049,411 ns | 114,837 us |
| Type | N | Add | ContainsKey | Iterate | RandomRemoval |
|---|---|---|---|---|---|
Sys.Coll.Imm.SortedDictionary | 100 | 31 us | 3,814 ns | 6,140 ns | 24,785 ns |
Sys.Coll.Imm.SortedDictionary | 1000 | 539 us | 78,032 ns | 61,408 ns | 449,868 ns |
Sys.Coll.Imm.SortedDictionary | 10000 | 9,631 us | 1,165,587 ns | 617,841 ns | 7,246,961 ns |
Sys.Coll.Imm.SortedDictionary | 100000 | 203,653 us | 19,308,708 ns | 8,107,066 ns | 149,215,888 ns |
LanguageExt.Map | 100 | 19 us | 2,805 ns | 1,593 ns | 13,458 ns |
LanguageExt.Map | 1000 | 335 us | 82,493 ns | 16,605 ns | 283,067 ns |
LanguageExt.Map | 10000 | 6,871 us | 1,272,800 ns | 190,544 ns | 5,016,271 ns |
LanguageExt.Map | 100000 | 155,131 us | 22,845,338 ns | 3,707,917 ns | 118,625,112 ns |
| Type | N | Add | ContainsKey | Iterate | RandomRemoval |
|---|---|---|---|---|---|
Sys.Coll.Imm.SortedDictionary | 100 | 79 us | 42 us | 10,449 ns | 59 us |
Sys.Coll.Imm.SortedDictionary | 1000 | 1,333 us | 706 us | 103,676 ns | 1,069 us |
Sys.Coll.Imm.SortedDictionary | 10000 | 21,790 us | 10,429 us | 1,073,453 ns | 17,848 us |
Sys.Coll.Imm.SortedDictionary | 100000 | 393,881 us | 164,318 us | 13,811,388 ns | 319,229 us |
LanguageExt.Map | 100 | 72 us | 44 us | 2,112 ns | 51 us |
LanguageExt.Map | 1000 | 1,137 us | 737 us | 22,033 ns | 896 us |
LanguageExt.Map | 10000 | 19,178 us | 10,676 us | 252,819 ns | 15,598 us |
LanguageExt.Map | 100000 | 350,295 us | 171,571 us | 4,256,098 ns | 301,462 us |
| Type | N | Add | Contains | Iteration | RandomRemoval |
|---|---|---|---|---|---|
Sys.Coll.Imm.HashSet | 100 | 52 us | 3 us | 11,975 ns | 39,490 ns |
Sys.Coll.Imm.HashSet | 1000 | 878 us | 65 us | 118,770 ns | 702,550 ns |
Sys.Coll.Imm.HashSet | 10000 | 14,230 us | 1,033 us | 1,245,373 ns | 11,267,592 ns |
Sys.Coll.Imm.HashSet | 100000 | 249,189 us | 17,250 us | 15,266,368 ns | 207,453,344 ns |
LanguageExt.HashSet | 100 | 13 us | 2 us | 3,366 ns | 13,782 ns |
LanguageExt.HashSet | 1000 | 224 us | 23 us | 34,842 ns | 221,730 ns |
LanguageExt.HashSet | 10000 | 4,520 us | 320 us | 458,131 ns | 3,744,864 ns |
LanguageExt.HashSet | 100000 | 85,851 us | 5,648 us | 6,528,404 ns | 74,686,456 ns |
| Type | N | Add | Contains | Iteration | RandomRemoval |
|---|---|---|---|---|---|
Sys.Coll.Imm.HashSet | 100 | 66 us | 8 us | 26,331 ns | 51 us |
Sys.Coll.Imm.HashSet | 1000 | 1,008 us | 117 us | 261,931 ns | 833 us |
Sys.Coll.Imm.HashSet | 10000 | 15,992 us | 1,575 us | 2,660,329 ns | 12,879 us |
Sys.Coll.Imm.HashSet | 100000 | 271,162 us | 25,866 us | 30,410,462 ns | 224,692 us |
LanguageExt.HashSet | 100 | 21 us | 6 us | 3,665 ns | 21 us |
LanguageExt.HashSet | 1000 | 322 us | 69 us | 40,037 ns | 327 us |
LanguageExt.HashSet | 10000 | 5,761 us | 820 us | 488,167 ns | 4,944 us |
LanguageExt.HashSet | 100000 | 113,138 us | 13,739 us | 7,971,738 ns | 94,890 us |
| Type | N | Add | Contains | Iteration | RandomRemoval |
|---|---|---|---|---|---|
Sys.Coll.Imm.SortedSet | 100 | 29 us | 3 us | 6,058 ns | 23,319 ns |
Sys.Coll.Imm.SortedSet | 1000 | 506 us | 67 us | 60,265 ns | 425,159 ns |
Sys.Coll.Imm.SortedSet | 10000 | 8,748 us | 1,009 us | 618,772 ns | 6,950,004 ns |
Sys.Coll.Imm.SortedSet | 100000 | 195,510 us | 17,397 us | 7,341,612 ns | 145,175,136 ns |
LanguageExt.Set | 100 | 17 us | 3 us | 1,575 ns | 18,006 ns |
LanguageExt.Set | 1000 | 306 us | 70 us | 16,889 ns | 324,040 ns |
LanguageExt.Set | 10000 | 6,199 us | 1,101 us | 192,437 ns | 5,918,020 ns |
LanguageExt.Set | 100000 | 147,726 us | 20,893 us | 2,980,587 ns | 138,141,008 ns |
| Type | N | Add | Contains | Iteration | RandomRemoval |
|---|---|---|---|---|---|
Sys.Coll.Imm.SortedSet | 100 | 72 us | 40 us | 10,645 ns | 60 us |
Sys.Coll.Imm.SortedSet | 1000 | 1,187 us | 683 us | 104,584 ns | 1,022 us |
Sys.Coll.Imm.SortedSet | 10000 | 19,371 us | 9,842 us | 1,071,031 ns | 16,301 us |
Sys.Coll.Imm.SortedSet | 100000 | 329,705 us | 161,498 us | 13,185,054 ns | 288,019 us |
LanguageExt.Set | 100 | 63 us | 37 us | 1,644 ns | 47 us |
LanguageExt.Set | 1000 | 1,001 us | 629 us | 17,305 ns | 854 us |
LanguageExt.Set | 10000 | 16,150 us | 9,435 us | 200,705 ns | 14,227 us |
LanguageExt.Set | 100000 | 307,030 us | 144,921 us | 2,834,565 ns | 272,077 us |