Benchmark of Collection Searching (TryGetValue method) in terms of Allocation Size (original) (raw)
` 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 | - | - | - |