Benchmark of Collection Searching (TryGetValue method) in terms of Allocation Size
BenchmarkDotNet v0.13.12, Windows 11 (10.0.22631.3007/23H2/2023Update/SunValley3)
AMD Ryzen 7 5800H with Radeon Graphics, 1 CPU, 16 logical and 8 physical cores
.NET SDK 8.0.101
[Host] : .NET 8.0.1 (8.0.123.58001), X64 RyuJIT AVX2
ShortRun : .NET 8.0.1 (8.0.123.58001), X64 RyuJIT AVX2
Job=ShortRun IterationCount=3 LaunchCount=1
WarmupCount=3
Comparison: Allocated
Method | Big O | Length | Existed | Int32 | String | StructInts | ClassInts | RecordStructInts | RecordClassInts | StructStrings | ClassStrings | RecordStructStrings | RecordClassStrings |
Array (Sorted + BinarySearch) |
O(log(N)) |
1000 |
False |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
ImmutableArray (Sorted + BinarySearch) |
O(log(N)) |
1000 |
False |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
ImmutableList (Sorted + BinarySearch) |
O(log(N)) |
1000 |
False |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
ImmutableSortedDictionary |
O(log(N)) |
1000 |
False |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
ImmutableSortedSet |
O(log(N)) |
1000 |
False |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
List (Sorted + BinarySearch) |
O(log(N)) |
1000 |
False |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
SortedSet |
O(log(N)) |
1000 |
False |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Dictionary |
O(1) |
1000 |
False |
- |
- |
32 B |
- |
- |
- |
40 B |
- |
- |
- |
FrozenDictionary |
O(1) |
1000 |
False |
- |
- |
32 B |
- |
- |
- |
40 B |
- |
- |
- |
FrozenSet |
O(1) |
1000 |
False |
- |
- |
32 B |
- |
- |
- |
40 B |
- |
- |
- |
HashSet |
O(1) |
1000 |
False |
- |
- |
32 B |
- |
- |
- |
40 B |
- |
- |
- |
ImmutableDictionary |
O(1) |
1000 |
False |
- |
- |
32 B |
- |
- |
- |
40 B |
- |
- |
- |
ImmutableHashSet |
O(1) |
1000 |
False |
- |
- |
32 B |
- |
- |
- |
40 B |
- |
- |
- |
ReadOnlyDictionary |
O(1) |
1000 |
False |
- |
- |
32 B |
- |
- |
- |
40 B |
- |
- |
- |
SortedDictionary |
O(log(N)) |
1000 |
False |
- |
- |
32 B |
- |
32 B |
- |
40 B |
- |
40 B |
- |
SortedList |
O(log(N)) |
1000 |
False |
- |
- |
32 B |
- |
32 B |
- |
40 B |
- |
40 B |
- |
ReadOnlyCollection |
O(N) |
1000 |
False |
- |
- |
64000 B |
- |
- |
- |
128000 B |
- |
- |
- |
Array |
O(N) |
1000 |
False |
- |
- |
64000 B |
- |
- |
- |
128001 B |
- |
- |
- |
ImmutableArray |
O(N) |
1000 |
False |
- |
- |
64000 B |
- |
- |
- |
128001 B |
- |
- |
- |
List |
O(N) |
1000 |
False |
- |
- |
64000 B |
- |
- |
- |
128001 B |
- |
- |
- |
Method | Big O | Length | Existed | Int32 | String | StructInts | ClassInts | RecordStructInts | RecordClassInts | StructStrings | ClassStrings | RecordStructStrings | RecordClassStrings |
Array (Sorted + BinarySearch) |
O(log(N)) |
1000 |
True |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
ImmutableArray (Sorted + BinarySearch) |
O(log(N)) |
1000 |
True |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
ImmutableList (Sorted + BinarySearch) |
O(log(N)) |
1000 |
True |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
ImmutableSortedDictionary |
O(log(N)) |
1000 |
True |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
ImmutableSortedSet |
O(log(N)) |
1000 |
True |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
List (Sorted + BinarySearch) |
O(log(N)) |
1000 |
True |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
SortedSet |
O(log(N)) |
1000 |
True |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
SortedDictionary |
O(log(N)) |
1000 |
True |
- |
- |
32 B |
- |
32 B |
- |
40 B |
- |
40 B |
- |
SortedList |
O(log(N)) |
1000 |
True |
- |
- |
32 B |
- |
32 B |
- |
40 B |
- |
40 B |
- |
Dictionary |
O(1) |
1000 |
True |
- |
- |
96 B |
- |
- |
- |
168 B |
- |
- |
- |
FrozenDictionary |
O(1) |
1000 |
True |
- |
- |
96 B |
- |
- |
- |
168 B |
- |
- |
- |
FrozenSet |
O(1) |
1000 |
True |
- |
- |
96 B |
- |
- |
- |
168 B |
- |
- |
- |
HashSet |
O(1) |
1000 |
True |
- |
- |
96 B |
- |
- |
- |
168 B |
- |
- |
- |
ImmutableDictionary |
O(1) |
1000 |
True |
- |
- |
96 B |
- |
- |
- |
168 B |
- |
- |
- |
ImmutableHashSet |
O(1) |
1000 |
True |
- |
- |
96 B |
- |
- |
- |
168 B |
- |
- |
- |
ReadOnlyDictionary |
O(1) |
1000 |
True |
- |
- |
96 B |
- |
- |
- |
168 B |
- |
- |
- |
Array |
O(N) |
1000 |
True |
- |
- |
30901 B |
- |
- |
- |
61441 B |
- |
- |
- |
ImmutableArray |
O(N) |
1000 |
True |
- |
- |
30901 B |
- |
- |
- |
61441 B |
- |
- |
- |
List |
O(N) |
1000 |
True |
- |
- |
30901 B |
- |
- |
- |
61441 B |
- |
- |
- |
ReadOnlyCollection |
O(N) |
1000 |
True |
- |
- |
30901 B |
- |
- |
- |
61441 B |
- |
- |
- |