Back to Language Ext

Perfomance benchmarks

Performance.md

4.4.49.3 KB
Original Source

Perfomance benchmarks

** 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
  

Note

References to Sys.Coll.Imm are Microsoft's ImmutableCollections library.

  • Sys.Coll.Imm.List is System.Collections.Immutable.ImmutableList
  • Sys.Coll.Imm.Dictionary is System.Collections.Immutable.ImmutableDictionary
  • Sys.Coll.Imm.SortedDictionary is System.Collections.Immutable.ImmutableSortedDictionary
  • Sys.Coll.Imm.SortedSet is System.Collections.Immutable.ImmutableSortedSet

Lists

Lists with value types

TypeNAddRandomAccessIteration
Sys.Coll.Imm.List10020 us6,016 ns1,021 ns
Sys.Coll.Imm.List1000342 us62,300 ns32,942 ns
Sys.Coll.Imm.List100005,942 us605,456 ns443,482 ns
Sys.Coll.Imm.List10000087,089 us8,154,876 ns6,146,402 ns
LanguageExt.Lst10017 us1,386 ns1,213 ns
LanguageExt.Lst1000273 us13,455 ns35,304 ns
LanguageExt.Lst100005,341 us137,278 ns471,614 ns
LanguageExt.Lst10000062,340 us1,696,505 ns6,195,590 ns
LanguageExt.Seq1002 us638 ns359 ns
LanguageExt.Seq100017 us6,194 ns3,518 ns
LanguageExt.Seq10000205 us61,358 ns35,117 ns
LanguageExt.Seq1000001,879 us613,746 ns351,036 ns

Lists with reference types

TypeNAddRandomAccessIteration
Sys.Coll.Imm.List10022 us10,652 ns1,013 ns
Sys.Coll.Imm.List1000357 us105,946 ns33,410 ns
Sys.Coll.Imm.List100006,237 us1,069,881 ns448,148 ns
Sys.Coll.Imm.List10000083,450 us13,386,415 ns6,260,259 ns
LanguageExt.Lst10024 us1,547 ns3,561 ns
LanguageExt.Lst1000349 us14,446 ns56,720 ns
LanguageExt.Lst100006,240 us148,034 ns747,441 ns
LanguageExt.Lst10000075,870 us1,986,228 ns9,194,727 ns
LanguageExt.Seq1003 us888 ns856 ns
LanguageExt.Seq100028 us8,489 ns8,537 ns
LanguageExt.Seq10000367 us84,479 ns85,092 ns
LanguageExt.Seq1000004,463 us856,149 ns853,446 ns

Maps

Unsorted maps with value types

TypeNAddContainsKeyIterateRandomRemoval
Sys.Coll.Imm.Dictionary10069 us2,348 ns10,647 ns49,871 ns
Sys.Coll.Imm.Dictionary10001,125 us60,126 ns118,251 ns894,815 ns
Sys.Coll.Imm.Dictionary1000017,785 us958,715 ns1,164,131 ns13,768,680 ns
Sys.Coll.Imm.Dictionary100000298,988 us17,859,368 ns13,715,622 ns242,798,528 ns
LanguageExt.HashMap10015 us2,042 ns3,579 ns14,065 ns
LanguageExt.HashMap1000245 us27,338 ns38,108 ns231,652 ns
LanguageExt.HashMap100005,023 us354,385 ns459,233 ns3,810,743 ns
LanguageExt.HashMap10000092,372 us7,196,852 ns7,432,346 ns77,218,736 ns

Unsorted maps with reference types

TypeNAddContainsKeyIterateRandomRemoval
Sys.Coll.Imm.Dictionary10090 us6 us20,352 ns67 us
Sys.Coll.Imm.Dictionary10001,481 us104 us202,502 ns1,085 us
Sys.Coll.Imm.Dictionary1000023,336 us1,504 us2,076,426 ns17,480 us
Sys.Coll.Imm.Dictionary100000390,738 us28,854 us26,252,578 ns291,299 us
LanguageExt.HashMap10027 us5 us5,394 ns24 us
LanguageExt.HashMap1000404 us74 us62,036 ns364 us
LanguageExt.HashMap100007,080 us859 us755,971 ns5,773 us
LanguageExt.HashMap100000138,283 us17,573 us12,049,411 ns114,837 us

Sorted maps with value types

TypeNAddContainsKeyIterateRandomRemoval
Sys.Coll.Imm.SortedDictionary10031 us3,814 ns6,140 ns24,785 ns
Sys.Coll.Imm.SortedDictionary1000539 us78,032 ns61,408 ns449,868 ns
Sys.Coll.Imm.SortedDictionary100009,631 us1,165,587 ns617,841 ns7,246,961 ns
Sys.Coll.Imm.SortedDictionary100000203,653 us19,308,708 ns8,107,066 ns149,215,888 ns
LanguageExt.Map10019 us2,805 ns1,593 ns13,458 ns
LanguageExt.Map1000335 us82,493 ns16,605 ns283,067 ns
LanguageExt.Map100006,871 us1,272,800 ns190,544 ns5,016,271 ns
LanguageExt.Map100000155,131 us22,845,338 ns3,707,917 ns118,625,112 ns

Sorted maps with reference types

TypeNAddContainsKeyIterateRandomRemoval
Sys.Coll.Imm.SortedDictionary10079 us42 us10,449 ns59 us
Sys.Coll.Imm.SortedDictionary10001,333 us706 us103,676 ns1,069 us
Sys.Coll.Imm.SortedDictionary1000021,790 us10,429 us1,073,453 ns17,848 us
Sys.Coll.Imm.SortedDictionary100000393,881 us164,318 us13,811,388 ns319,229 us
LanguageExt.Map10072 us44 us2,112 ns51 us
LanguageExt.Map10001,137 us737 us22,033 ns896 us
LanguageExt.Map1000019,178 us10,676 us252,819 ns15,598 us
LanguageExt.Map100000350,295 us171,571 us4,256,098 ns301,462 us

Sets

Unsorted sets with value types

TypeNAddContainsIterationRandomRemoval
Sys.Coll.Imm.HashSet10052 us3 us11,975 ns39,490 ns
Sys.Coll.Imm.HashSet1000878 us65 us118,770 ns702,550 ns
Sys.Coll.Imm.HashSet1000014,230 us1,033 us1,245,373 ns11,267,592 ns
Sys.Coll.Imm.HashSet100000249,189 us17,250 us15,266,368 ns207,453,344 ns
LanguageExt.HashSet10013 us2 us3,366 ns13,782 ns
LanguageExt.HashSet1000224 us23 us34,842 ns221,730 ns
LanguageExt.HashSet100004,520 us320 us458,131 ns3,744,864 ns
LanguageExt.HashSet10000085,851 us5,648 us6,528,404 ns74,686,456 ns

Unsorted sets with reference types

TypeNAddContainsIterationRandomRemoval
Sys.Coll.Imm.HashSet10066 us8 us26,331 ns51 us
Sys.Coll.Imm.HashSet10001,008 us117 us261,931 ns833 us
Sys.Coll.Imm.HashSet1000015,992 us1,575 us2,660,329 ns12,879 us
Sys.Coll.Imm.HashSet100000271,162 us25,866 us30,410,462 ns224,692 us
LanguageExt.HashSet10021 us6 us3,665 ns21 us
LanguageExt.HashSet1000322 us69 us40,037 ns327 us
LanguageExt.HashSet100005,761 us820 us488,167 ns4,944 us
LanguageExt.HashSet100000113,138 us13,739 us7,971,738 ns94,890 us

Sorted sets with value types

TypeNAddContainsIterationRandomRemoval
Sys.Coll.Imm.SortedSet10029 us3 us6,058 ns23,319 ns
Sys.Coll.Imm.SortedSet1000506 us67 us60,265 ns425,159 ns
Sys.Coll.Imm.SortedSet100008,748 us1,009 us618,772 ns6,950,004 ns
Sys.Coll.Imm.SortedSet100000195,510 us17,397 us7,341,612 ns145,175,136 ns
LanguageExt.Set10017 us3 us1,575 ns18,006 ns
LanguageExt.Set1000306 us70 us16,889 ns324,040 ns
LanguageExt.Set100006,199 us1,101 us192,437 ns5,918,020 ns
LanguageExt.Set100000147,726 us20,893 us2,980,587 ns138,141,008 ns

Sorted sets with reference types

TypeNAddContainsIterationRandomRemoval
Sys.Coll.Imm.SortedSet10072 us40 us10,645 ns60 us
Sys.Coll.Imm.SortedSet10001,187 us683 us104,584 ns1,022 us
Sys.Coll.Imm.SortedSet1000019,371 us9,842 us1,071,031 ns16,301 us
Sys.Coll.Imm.SortedSet100000329,705 us161,498 us13,185,054 ns288,019 us
LanguageExt.Set10063 us37 us1,644 ns47 us
LanguageExt.Set10001,001 us629 us17,305 ns854 us
LanguageExt.Set1000016,150 us9,435 us200,705 ns14,227 us
LanguageExt.Set100000307,030 us144,921 us2,834,565 ns272,077 us