# Container performance reference


The median of 10 sample sets is compared against the baseline on the far right side of the table. Multithreaded benchmarks divide the processing amongst the specified number of workers. 5 extra sample sets are run as warmup. All measurments were taken on Intel(R) Core(TM) i9-9900KS CPU @ 4.00GHz with 16 logical cores. Unity Editor version: 2022.3.6f1.

> **Legend**
>
> `(S)` = Safety Enabled
>
> `(B)` = Burst Compiled *with Safety Disabled*
>
> `(S+B)` = Burst Compiled *with Safety Enabled*
>
> `(BCL)` = Base Class Library implementation (such as provided by Mono or .NET)
>
> *`italic`* results are for benchmarking comparison only; these are not included in standard Performance Framework tests

## Results sections

* [HashMap](#hashmap)
* [HashSet](#hashset)
* [List](#list)
* [ParallelHashMap](#parallelhashmap)
* [ParallelHashSet](#parallelhashset)
* [QueueParallelWriter](#queueparallelwriter)
* [Queue](#queue)
* [RingQueue](#ringqueue)

### *HashMap* ##hashmap

| Functionality                  | NativeHashMap (S)     | NativeHashMap (S+B)   | NativeHashMap (B)     | UnsafeHashMap (S)      | UnsafeHashMap (S+B)   | UnsafeHashMap (B)     | *Dictionary (BCL)*      |
| ------------------------------ | --------------------- | --------------------- | --------------------- | ---------------------- | --------------------- | --------------------- | ----------------------- |
| `IsEmpty_x_100k(0)`*¹*         | 0.342ms (0.4x) 🟠     | 0.111ms (1.1x)        | 0.133ms (0.9x)        | 0.221ms (0.5x)         | 0.105ms (1.1x) 🟢     | 0.106ms (1.1x)        | *0.120ms (1.0x)*        |
| `IsEmpty_x_100k(100)`*¹*       | 0.342ms (0.4x) 🟠     | 0.112ms (1.1x)        | 0.133ms (0.9x)        | 0.221ms (0.5x)         | 0.106ms (1.1x)        | 0.106ms (1.1x) 🟢     | *0.120ms (1.0x)*        |
| `Count_x_100k(0)`*¹*           | 0.261ms (0.5x) 🟠     | 0.142ms (0.8x)        | 0.108ms (1.1x) 🟢     | 0.120ms (1.0x)         | 0.111ms (1.1x)        | 0.111ms (1.1x)        | *0.120ms (1.0x)*        |
| `Count_x_100k(100)`*¹*         | 0.261ms (0.5x) 🟠     | 0.142ms (0.8x)        | 0.111ms (1.1x) 🟢     | 0.120ms (1.0x)         | 0.111ms (1.1x)        | 0.111ms (1.1x)        | *0.120ms (1.0x)*        |
| `ToNativeArrayKeys(10000)`     | 0.151ms (0.1x)        | 0.126ms (0.1x)        | 0.092ms (0.2x)        | 0.159ms (0.1x) 🟠      | 0.125ms (0.1x)        | 0.083ms (0.2x)        | *0.018ms (1.0x)* 🟢     |
| `ToNativeArrayKeys(100000)`    | 1.659ms (0.1x) 🟠     | 1.214ms (0.1x)        | 0.918ms (0.2x)        | 1.610ms (0.1x)         | 1.205ms (0.1x)        | 0.908ms (0.2x)        | *0.174ms (1.0x)* 🟢     |
| `ToNativeArrayKeys(1000000)`   | 21.689ms (0.1x) 🟠    | 13.624ms (0.2x)       | 10.721ms (0.2x)       | 19.842ms (0.1x)        | 13.505ms (0.2x)       | 10.569ms (0.2x)       | *2.059ms (1.0x)* 🟢     |
| `ToNativeArrayValues(10000)`   | 0.160ms (0.1x)        | 0.118ms (0.2x)        | 0.086ms (0.2x)        | 0.161ms (0.1x) 🟠      | 0.125ms (0.1x)        | 0.084ms (0.2x)        | *0.018ms (1.0x)* 🟢     |
| `ToNativeArrayValues(100000)`  | 1.702ms (0.1x)        | 1.192ms (0.1x)        | 0.935ms (0.2x)        | 1.721ms (0.1x) 🟠      | 1.196ms (0.1x)        | 0.919ms (0.2x)        | *0.173ms (1.0x)* 🟢     |
| `ToNativeArrayValues(1000000)` | 20.402ms (0.1x)       | 13.609ms (0.1x)       | 11.017ms (0.2x)       | 20.556ms (0.1x) 🟠     | 13.773ms (0.1x)       | 10.869ms (0.2x)       | *2.018ms (1.0x)* 🟢     |
| `Insert(10000)`                | 0.135ms (1.3x)        | 0.070ms (2.5x)        | 0.061ms (2.9x)        | 0.120ms (1.5x)         | 0.060ms (2.9x) 🟢     | 0.061ms (2.9x)        | *0.175ms (1.0x)* 🟠     |
| `Insert(100000)`               | 1.723ms (1.3x)        | 0.996ms (2.2x)        | 0.914ms (2.4x)        | 1.565ms (1.4x)         | 0.909ms (2.4x)        | 0.889ms (2.5x) 🟢     | *2.209ms (1.0x)* 🟠     |
| `Insert(1000000)`              | 33.017ms (0.9x)       | 21.056ms (1.4x)       | 19.847ms (1.5x)       | 50.228ms (0.6x) 🟠     | 19.654ms (1.5x)       | 19.613ms (1.5x) 🟢    | *29.738ms (1.0x)*       |
| `AddGrow(4, 1048576)`*³*       | 137.459ms (0.4x) 🟠   | 81.364ms (0.6x)       | 77.039ms (0.6x)       | 133.603ms (0.4x)       | 78.458ms (0.6x)       | 76.533ms (0.6x)       | *49.222ms (1.0x)* 🟢    |
| `AddGrow(65536, 1048576)`*³*   | 140.883ms (0.4x) 🟠   | 82.611ms (0.6x)       | 77.670ms (0.6x)       | 134.717ms (0.4x)       | 79.913ms (0.6x)       | 77.316ms (0.6x)       | *50.215ms (1.0x)* 🟢    |
| `Contains(10000)`              | 0.089ms (2.1x)        | 0.036ms (5.1x)        | 0.027ms (6.8x)        | 0.101ms (1.9x)         | 0.029ms (6.4x)        | 0.025ms (7.4x) 🟢     | *0.188ms (1.0x)* 🟠     |
| `Contains(100000)`             | 1.696ms (1.7x)        | 0.694ms (4.1x)        | 0.508ms (5.6x)        | 1.945ms (1.5x)         | 0.538ms (5.3x)        | 0.482ms (5.9x) 🟢     | *2.843ms (1.0x)* 🟠     |
| `Contains(1000000)`            | 42.805ms (1.5x)       | 17.135ms (3.6x)       | 12.633ms (4.9x)       | 43.284ms (1.4x)        | 12.700ms (4.9x)       | 11.703ms (5.3x) 🟢    | *62.072ms (1.0x)* 🟠    |
| `IndexedRead(10000)`           | 0.109ms (1.7x)        | 0.028ms (6.7x)        | 0.032ms (5.9x)        | 0.122ms (1.6x)         | 0.027ms (7.1x)        | 0.026ms (7.1x) 🟢     | *0.189ms (1.0x)* 🟠     |
| `IndexedRead(100000)`          | 1.983ms (1.4x)        | 0.592ms (4.7x)        | 0.614ms (4.5x)        | 2.125ms (1.3x)         | 0.543ms (5.1x) 🟢     | 0.545ms (5.1x)        | *2.791ms (1.0x)* 🟠     |
| `IndexedRead(1000000)`         | 57.739ms (1.1x)       | 16.881ms (3.7x)       | 16.937ms (3.7x)       | 57.860ms (1.1x)        | 14.918ms (4.1x) 🟢    | 15.113ms (4.1x)       | *61.850ms (1.0x)* 🟠    |
| `IndexedWrite(10000)`          | 0.103ms (2.0x)        | 0.080ms (2.6x)        | 0.040ms (5.2x)        | 0.084ms (2.5x)         | 0.039ms (5.3x)        | 0.036ms (5.8x) 🟢     | *0.209ms (1.0x)* 🟠     |
| `IndexedWrite(100000)`         | 1.890ms (1.6x)        | 1.269ms (2.4x)        | 0.755ms (4.1x)        | 1.473ms (2.1x)         | 0.759ms (4.1x)        | 0.707ms (4.3x) 🟢     | *3.074ms (1.0x)* 🟠     |
| `IndexedWrite(1000000)`        | 73.370ms (1.0x)       | 69.054ms (1.1x)       | 65.695ms (1.1x) 🟢    | 73.500ms (1.0x)        | 65.870ms (1.1x)       | 66.574ms (1.1x)       | *73.729ms (1.0x)* 🟠    |
| `TryGetValue(10000)`           | 0.105ms (1.8x)        | 0.033ms (5.7x)        | 0.032ms (5.9x)        | 0.120ms (1.6x)         | 0.029ms (6.6x) 🟢     | 0.029ms (6.6x) 🟢     | *0.191ms (1.0x)* 🟠     |
| `TryGetValue(100000)`          | 1.943ms (1.4x)        | 0.645ms (4.4x)        | 0.637ms (4.4x)        | 2.102ms (1.3x)         | 0.574ms (4.9x)        | 0.557ms (5.1x) 🟢     | *2.816ms (1.0x)* 🟠     |
| `TryGetValue(1000000)`         | 55.056ms (1.1x)       | 18.084ms (3.4x)       | 17.878ms (3.5x)       | 59.138ms (1.0x)        | 15.889ms (3.9x)       | 15.692ms (4.0x) 🟢    | *62.067ms (1.0x)* 🟠    |
| `Remove(10000)`                | 0.110ms (1.4x)        | 0.044ms (3.6x)        | 0.035ms (4.5x)        | 0.094ms (1.7x)         | 0.029ms (5.4x)        | 0.028ms (5.6x) 🟢     | *0.158ms (1.0x)* 🟠     |
| `Remove(100000)`               | 1.889ms (1.3x)        | 0.844ms (2.8x)        | 0.661ms (3.6x)        | 3.654ms (0.7x) 🟠      | 0.566ms (4.2x)        | 0.547ms (4.4x) 🟢     | *2.395ms (1.0x)*        |
| `Remove(1000000)`              | 62.623ms (1.0x)       | 56.372ms (1.1x)       | 53.877ms (1.2x) 🟢    | 61.104ms (1.0x)        | 54.841ms (1.1x)       | 55.805ms (1.1x)       | *62.915ms (1.0x)* 🟠    |
| `Foreach(10000)`               | 0.150ms (0.3x) 🟠     | 0.083ms (0.5x)        | 0.077ms (0.5x)        | 0.141ms (0.3x)         | 0.077ms (0.5x)        | 0.079ms (0.5x)        | *0.041ms (1.0x)* 🟢     |
| `Foreach(100000)`              | 1.984ms (0.2x) 🟠     | 0.924ms (0.4x)        | 0.866ms (0.5x)        | 1.869ms (0.2x)         | 0.865ms (0.5x)        | 0.885ms (0.5x)        | *0.412ms (1.0x)* 🟢     |
| `Foreach(1000000)`             | 27.605ms (0.2x) 🟠    | 10.947ms (0.4x)       | 10.421ms (0.4x)       | 26.351ms (0.2x)        | 10.457ms (0.4x)       | 10.619ms (0.4x)       | *4.359ms (1.0x)* 🟢     |

*¹* Optimizations were disabled to perform this benchmark

*³* AddGrow(capacity, growTo) -- Incrementally grows from `capacity` until reaching size of `growTo`

### *HashSet* ##hashset

| Functionality                | NativeHashSet (S)     | NativeHashSet (S+B)   | NativeHashSet (B)      | UnsafeHashSet (S)     | UnsafeHashSet (S+B)   | UnsafeHashSet (B)      | *HashSet (BCL)*         |
| ---------------------------- | --------------------- | --------------------- | ---------------------- | --------------------- | --------------------- | ---------------------- | ----------------------- |
| `IsEmpty_x_100k(0)`*¹*       | 0.342ms (0.4x) 🟠     | 0.112ms (1.3x)        | 0.133ms  (1.1x)        | 0.221ms (0.6x)        | 0.106ms (1.3x) 🟢     | 0.106ms  (1.3x)        | *0.140ms (1.0x)*        |
| `IsEmpty_x_100k(100)`*¹*     | 0.342ms (0.4x) 🟠     | 0.112ms (1.3x)        | 0.133ms  (1.1x)        | 0.221ms (0.6x)        | 0.106ms (1.3x)        | 0.106ms  (1.3x) 🟢     | *0.140ms (1.0x)*        |
| `Count_x_100k(0)`*¹*         | 0.261ms (0.5x) 🟠     | 0.143ms (1.0x)        | 0.111ms  (1.3x)        | 0.100ms (1.4x) 🟢     | 0.111ms (1.3x)        | 0.108ms  (1.3x)        | *0.140ms (1.0x)*        |
| `Count_x_100k(100)`*¹*       | 0.261ms (0.5x) 🟠     | 0.142ms (1.0x)        | 0.111ms  (1.3x)        | 0.100ms (1.4x) 🟢     | 0.111ms (1.3x)        | 0.111ms  (1.3x)        | *0.140ms (1.0x)*        |
| `ToNativeArray(10000)`       | 0.043ms (0.4x) 🟠     | 0.015ms (1.2x)        | 0.009ms  (1.9x)        | 0.043ms (0.4x)        | 0.015ms (1.2x)        | 0.009ms  (1.9x) 🟢     | *0.018ms (1.0x)*        |
| `ToNativeArray(100000)`      | 0.475ms (0.4x)        | 0.144ms (1.2x)        | 0.085ms  (2.1x) 🟢     | 0.485ms (0.4x) 🟠     | 0.144ms (1.2x)        | 0.085ms  (2.1x) 🟢     | *0.176ms (1.0x)*        |
| `ToNativeArray(1000000)`     | 4.935ms (0.4x)        | 1.591ms (1.2x)        | 0.989ms  (1.9x) 🟢     | 5.378ms (0.4x) 🟠     | 1.586ms (1.2x)        | 0.997ms  (1.9x)        | *1.927ms (1.0x)*        |
| `Insert(10000)`              | 0.093ms (1.1x)        | 0.044ms (2.3x)        | 0.040ms  (2.6x)        | 0.078ms (1.3x)        | 0.039ms (2.6x)        | 0.035ms  (2.9x) 🟢     | *0.103ms (1.0x)* 🟠     |
| `Insert(100000)`             | 0.937ms (1.1x)        | 0.441ms (2.3x)        | 0.403ms  (2.6x)        | 0.785ms (1.3x)        | 0.390ms (2.6x)        | 0.351ms  (2.9x) 🟢     | *1.029ms (1.0x)* 🟠     |
| `Insert(1000000)`            | 12.275ms (0.8x) 🟠    | 7.030ms (1.5x)        | 6.650ms  (1.6x) 🟢     | 10.495ms (1.0x)       | 6.902ms (1.5x)        | 6.747ms  (1.5x)        | *10.384ms (1.0x)*       |
| `AddGrow(4, 1048576)`*³*     | 76.515ms (0.3x) 🟠    | 35.430ms (0.6x)       | 33.171ms  (0.6x)       | 75.704ms (0.3x)       | 32.776ms (0.6x)       | 30.928ms  (0.7x)       | *20.387ms (1.0x)* 🟢    |
| `AddGrow(65536, 1048576)`*³* | 75.192ms (0.3x) 🟠    | 34.149ms (0.6x)       | 32.652ms  (0.6x)       | 74.248ms (0.3x)       | 34.092ms (0.6x)       | 32.440ms  (0.6x)       | *19.978ms (1.0x)* 🟢    |
| `Contains(10000)`            | 0.061ms (1.8x)        | 0.017ms (6.7x)        | 0.010ms (11.5x)        | 0.072ms (1.6x)        | 0.013ms (8.9x)        | 0.009ms (12.5x) 🟢     | *0.113ms (1.0x)* 🟠     |
| `Contains(100000)`           | 0.949ms (1.7x)        | 0.311ms (5.2x)        | 0.199ms  (8.1x)        | 1.104ms (1.5x)        | 0.207ms (7.8x)        | 0.180ms  (8.9x) 🟢     | *1.610ms (1.0x)* 🟠     |
| `Contains(1000000)`          | 11.436ms (1.7x)       | 3.877ms (4.9x)        | 2.576ms  (7.4x)        | 13.252ms (1.4x)       | 2.653ms (7.2x)        | 2.373ms  (8.0x) 🟢     | *19.089ms (1.0x)* 🟠    |
| `Remove(10000)`              | 0.111ms (1.7x)        | 0.054ms (3.4x)        | 0.044ms  (4.3x)        | 0.101ms (1.8x)        | 0.036ms (5.2x) 🟢     | 0.040ms  (4.6x)        | *0.186ms (1.0x)* 🟠     |
| `Remove(100000)`             | 1.327ms (1.6x)        | 0.645ms (3.2x)        | 0.531ms  (3.9x)        | 1.218ms (1.7x)        | 0.438ms (4.7x) 🟢     | 0.477ms  (4.4x)        | *2.076ms (1.0x)* 🟠     |
| `Remove(1000000)`            | 15.132ms (1.5x)       | 7.264ms (3.2x)        | 5.953ms  (3.9x)        | 26.197ms (0.9x) 🟠    | 4.917ms (4.7x) 🟢     | 5.268ms  (4.4x)        | *23.150ms (1.0x)*       |
| `Foreach(10000)`             | 0.081ms (0.4x) 🟠     | 0.029ms (1.2x)        | 0.016ms  (2.3x) 🟢     | 0.054ms (0.7x)        | 0.017ms (2.2x)        | 0.017ms  (2.2x)        | *0.036ms (1.0x)*        |
| `Foreach(100000)`            | 0.766ms (0.5x) 🟠     | 0.241ms (1.5x)        | 0.135ms  (2.6x) 🟢     | 0.505ms (0.7x)        | 0.145ms (2.5x)        | 0.145ms  (2.5x)        | *0.356ms (1.0x)*        |
| `Foreach(1000000)`           | 7.540ms (0.5x) 🟠     | 2.280ms (1.6x)        | 1.431ms  (2.5x) 🟢     | 4.906ms (0.7x)        | 1.524ms (2.4x)        | 1.516ms  (2.4x)        | *3.638ms (1.0x)*        |
| `UnionWith(10000)`           | 0.226ms (1.1x)        | 0.144ms (1.8x)        | 0.128ms  (2.0x)        | 0.191ms (1.3x)        | 0.119ms (2.1x)        | 0.116ms  (2.2x) 🟢     | *0.254ms (1.0x)* 🟠     |
| `UnionWith(100000)`          | 2.545ms (1.4x)        | 1.664ms (2.1x)        | 1.486ms  (2.3x)        | 2.140ms (1.6x)        | 1.370ms (2.5x)        | 1.349ms  (2.6x) 🟢     | *3.441ms (1.0x)* 🟠     |
| `UnionWith(1000000)`         | 80.802ms (0.7x) 🟠    | 43.823ms (1.4x)       | 39.187ms  (1.5x) 🟢    | 74.811ms (0.8x)       | 45.527ms (1.3x)       | 40.115ms  (1.5x)       | *59.785ms (1.0x)*       |
| `IntersectWith(10000)`       | 0.246ms (1.1x)        | 0.142ms (1.9x)        | 0.123ms  (2.2x)        | 0.201ms (1.3x)        | 0.107ms (2.5x)        | 0.105ms  (2.6x) 🟢     | *0.270ms (1.0x)* 🟠     |
| `IntersectWith(100000)`      | 2.705ms (1.3x)        | 1.546ms (2.2x)        | 1.405ms  (2.4x)        | 2.218ms (1.5x)        | 1.189ms (2.9x) 🟢     | 1.231ms  (2.8x)        | *3.436ms (1.0x)* 🟠     |
| `IntersectWith(1000000)`     | 33.228ms (2.0x)       | 19.026ms (3.4x)       | 17.066ms  (3.8x)       | 27.030ms (2.4x)       | 14.937ms (4.4x) 🟢    | 15.096ms  (4.3x)       | *65.055ms (1.0x)* 🟠    |
| `ExceptWith(10000)`          | 0.212ms (1.0x)        | 0.125ms (1.7x)        | 0.107ms  (2.0x)        | 0.175ms (1.3x)        | 0.094ms (2.3x)        | 0.093ms  (2.4x) 🟢     | *0.218ms (1.0x)* 🟠     |
| `ExceptWith(100000)`         | 2.374ms (1.2x)        | 1.419ms (2.0x)        | 1.257ms  (2.2x)        | 1.992ms (1.4x)        | 1.109ms (2.5x) 🟢     | 1.110ms  (2.5x)        | *2.799ms (1.0x)* 🟠     |
| `ExceptWith(1000000)`        | 35.627ms (1.1x)       | 19.482ms (2.0x)       | 17.001ms  (2.3x)       | 29.688ms (1.3x)       | 15.493ms (2.6x) 🟢    | 15.620ms  (2.5x)       | *39.627ms (1.0x)* 🟠    |

*¹* Optimizations were disabled to perform this benchmark *³* AddGrow(capacity, growTo) -- Incrementally grows from `capacity` until reaching size of `growTo`

### *List* ##list

| Functionality                | NativeList (S)        | NativeList (S+B)     | NativeList (B)        | UnsafeList (S)        | UnsafeList (S+B)      | UnsafeList (B)        | *List (BCL)*           |
| ---------------------------- | --------------------- | -------------------- | --------------------- | --------------------- | --------------------- | --------------------- | ---------------------- |
| `IsEmpty_x_100k(0)`*¹*       | 0.154ms (0.9x)        | 0.121ms (1.2x)       | 0.111ms  (1.3x)       | 0.161ms (0.9x) 🟠     | 0.106ms  (1.3x) 🟢    | 0.106ms  (1.3x) 🟢    | *0.140ms (1.0x)*       |
| `IsEmpty_x_100k(100)`*¹*     | 0.154ms (0.9x)        | 0.121ms (1.2x)       | 0.111ms  (1.3x)       | 0.161ms (0.9x) 🟠     | 0.106ms  (1.3x)       | 0.106ms  (1.3x) 🟢    | *0.140ms (1.0x)*       |
| `Count_x_100k(0)`*¹*         | 0.120ms (1.0x) 🟠     | 0.111ms (1.1x)       | 0.111ms  (1.1x)       | 0.020ms (6.0x) 🟢     | 0.081ms  (1.5x)       | 0.108ms  (1.1x)       | *0.120ms (1.0x)*       |
| `Count_x_100k(100)`*¹*       | 0.120ms (1.0x) 🟠     | 0.111ms (1.1x)       | 0.111ms  (1.1x)       | 0.020ms (6.0x) 🟢     | 0.081ms  (1.5x)       | 0.108ms  (1.1x)       | *0.120ms (1.0x)* 🟠    |
| `ToNativeArray(10000)`       | 0.002ms (1.4x)        | 0.002ms (1.8x)       | 0.002ms  (1.9x) 🟢    | ---                   | ---                   | ---                   | *0.003ms (1.0x)* 🟠    |
| `ToNativeArray(100000)`      | 0.088ms (0.3x) 🟠     | 0.015ms (1.9x)       | 0.015ms  (2.0x) 🟢    | ---                   | ---                   | ---                   | *0.029ms (1.0x)*       |
| `ToNativeArray(1000000)`     | 0.906ms (0.3x) 🟠     | 0.143ms (2.1x) 🟢    | 0.148ms  (2.1x)       | ---                   | ---                   | ---                   | *0.306ms (1.0x)*       |
| `Add(10000)`                 | 0.040ms (0.4x) 🟠     | 0.014ms (1.0x)       | 0.016ms  (0.9x)       | 0.017ms (0.9x)        | 0.007ms  (2.2x) 🟢    | 0.007ms  (2.2x)       | *0.014ms (1.0x)*       |
| `Add(100000)`                | 0.400ms (0.4x) 🟠     | 0.140ms (1.0x)       | 0.155ms  (0.9x)       | 0.166ms (0.9x)        | 0.061ms  (2.3x) 🟢    | 0.061ms  (2.3x) 🟢    | *0.144ms (1.0x)*       |
| `Add(1000000)`               | 4.000ms (0.4x) 🟠     | 1.399ms (1.0x)       | 1.548ms  (0.9x)       | 1.654ms (0.9x)        | 0.605ms  (2.4x) 🟢    | 0.608ms  (2.4x)       | *1.436ms (1.0x)*       |
| `AddGrow(4, 1048576)`*³*     | 4.647ms (0.5x) 🟠     | 1.886ms (1.3x)       | 1.759ms  (1.4x)       | 2.141ms (1.1x)        | 1.026ms  (2.3x) 🟢    | 1.033ms  (2.3x)       | *2.402ms (1.0x)*       |
| `AddGrow(65536, 1048576)`*³* | 4.604ms (0.5x) 🟠     | 1.865ms (1.3x)       | 1.773ms  (1.3x)       | 2.122ms (1.1x)        | 1.083ms  (2.2x)       | 1.010ms  (2.4x) 🟢    | *2.381ms (1.0x)*       |
| `Contains(1000)`             | 0.371ms (1.1x)        | 0.086ms (4.6x)       | 0.084ms  (4.7x)       | 0.370ms (1.1x)        | 0.148ms  (2.7x)       | 0.084ms  (4.7x) 🟢    | *0.394ms (1.0x)* 🟠    |
| `Contains(10000)`            | 37.241ms (1.2x)       | 7.565ms (6.0x)       | 7.548ms  (6.0x)       | 37.203ms (1.2x)       | 7.541ms  (6.0x) 🟢    | 7.544ms  (6.0x)       | *45.509ms (1.0x)* 🟠   |
| `IndexedRead(10000)`         | 0.037ms (0.6x) 🟠     | 0.009ms (2.7x)       | 0.005ms  (4.8x)       | 0.022ms (1.0x)        | 0.005ms  (5.0x) 🟢    | 0.005ms  (4.9x)       | *0.023ms (1.0x)*       |
| `IndexedRead(100000)`        | 0.474ms (0.7x) 🟠     | 0.090ms (3.6x)       | 0.068ms  (4.8x)       | 0.268ms (1.2x)        | 0.077ms  (4.2x)       | 0.068ms  (4.8x) 🟢    | *0.328ms (1.0x)*       |
| `IndexedRead(1000000)`       | 5.416ms (0.7x) 🟠     | 1.487ms (2.6x)       | 1.341ms  (2.9x) 🟢    | 3.197ms (1.2x)        | 1.395ms  (2.8x)       | 1.357ms  (2.9x)       | *3.897ms (1.0x)*       |
| `IndexedWrite(10000)`        | 0.028ms (1.0x)        | 0.011ms (2.6x)       | 0.007ms  (4.4x)       | 0.018ms (1.6x)        | 0.006ms  (4.6x) 🟢    | 0.010ms  (3.0x)       | *0.029ms (1.0x)* 🟠    |
| `IndexedWrite(100000)`       | 0.311ms (1.1x)        | 0.125ms (2.7x) 🟢    | 0.135ms  (2.5x)       | 0.220ms (1.5x)        | 0.136ms  (2.4x)       | 0.132ms  (2.5x)       | *0.331ms (1.0x)* 🟠    |
| `IndexedWrite(1000000)`      | 3.656ms (1.1x)        | 1.892ms (2.1x)       | 1.868ms  (2.1x)       | 2.775ms (1.4x)        | 1.796ms  (2.2x)       | 1.744ms  (2.3x) 🟢    | *3.956ms (1.0x)* 🟠    |
| `Remove(1000)`               | 0.087ms (0.3x) 🟠     | 0.011ms (1.9x)       | 0.011ms  (2.1x)       | 0.085ms (0.3x)        | 0.011ms  (2.0x)       | 0.010ms  (2.2x) 🟢    | *0.022ms (1.0x)*       |
| `Remove(10000)`              | 7.626ms (0.1x) 🟠     | 0.732ms (1.2x)       | 0.717ms  (1.2x)       | 7.616ms (0.1x)        | 0.716ms  (1.2x)       | 0.704ms  (1.2x) 🟢    | *0.853ms (1.0x)*       |
| `Foreach(10000)`             | 0.038ms (0.6x) 🟠     | 0.004ms (5.8x)       | 0.003ms  (8.8x)       | 0.016ms (1.5x)        | 0.003ms  (9.0x) 🟢    | 0.003ms  (9.0x) 🟢    | *0.024ms (1.0x)*       |
| `Foreach(100000)`            | 0.381ms (0.6x) 🟠     | 0.037ms (6.5x)       | 0.024ms (10.0x)       | 0.160ms (1.5x)        | 0.024ms (10.0x) 🟢    | 0.024ms (10.0x) 🟢    | *0.242ms (1.0x)*       |
| `Foreach(1000000)`           | 3.815ms (0.6x) 🟠     | 0.360ms (6.7x)       | 0.229ms (10.6x)       | 1.621ms (1.5x)        | 0.226ms (10.7x) 🟢    | 0.226ms (10.7x)       | *2.419ms (1.0x)*       |

*¹* Optimizations were disabled to perform this benchmark

*³* AddGrow(capacity, growTo) -- Incrementally grows from `capacity` until reaching size of `growTo`

### *ParallelHashMap* ##parallelhashmap

| Functionality                     | NativeParallelHashMap (S) | NativeParallelHashMap (S+B) | NativeParallelHashMap (B) | UnsafeParallelHashMap (S) | UnsafeParallelHashMap (S+B) | UnsafeParallelHashMap (B) | *ConcurrentDictionary (BCL)* |
| --------------------------------- | ------------------------- | --------------------------- | ------------------------- | ------------------------- | --------------------------- | ------------------------- | ---------------------------- |
| `IsEmpty_x_100k(1, 0)`*¹*         | 0.462ms  (176.1x)         | 0.141ms  (577.9x)           | 0.109ms  (748.4x) 🟢      | 0.261ms  (312.0x)         | 0.162ms  (501.5x)           | 0.174ms  (469.0x)         | *81.423ms (1.0x)* 🟠         |
| `IsEmpty_x_100k(2, 0)`*¹˒²*       | 0.234ms  (551.2x)         | 0.072ms (1782.5x) 🟢        | 0.090ms (1427.8x)         | 0.134ms  (965.2x)         | 0.096ms (1338.9x)           | 0.091ms (1412.9x)         | *129.140ms (1.0x)* 🟠        |
| `IsEmpty_x_100k(4, 0)`*¹˒²*       | 0.267ms  (644.7x)         | 0.042ms (4088.3x) 🟢        | 0.050ms (3473.0x)         | 0.078ms (2214.0x)         | 0.048ms (3604.1x)           | 0.047ms (3626.9x)         | *171.914ms (1.0x)* 🟠        |
| `IsEmpty_x_100k(1, 100)`*¹*       | 0.682ms  (114.0x)         | 0.238ms  (326.4x)           | 0.242ms  (322.0x)         | 0.582ms  (133.7x)         | 0.181ms  (429.8x)           | 0.181ms  (429.9x) 🟢      | *77.786ms (1.0x)* 🟠         |
| `IsEmpty_x_100k(2, 100)`*¹˒²*     | 0.380ms  (341.5x)         | 0.124ms (1046.8x)           | 0.142ms  (911.2x)         | 0.295ms  (440.2x)         | 0.093ms (1399.5x) 🟢        | 0.095ms (1370.0x)         | *129.804ms (1.0x)* 🟠        |
| `IsEmpty_x_100k(4, 100)`*¹˒²*     | 0.354ms  (490.4x)         | 0.114ms (1518.7x)           | 0.125ms (1385.9x)         | 0.217ms  (799.6x)         | 0.109ms (1596.9x)           | 0.062ms (2818.0x) 🟢      | *173.587ms (1.0x)* 🟠        |
| `Count_x_100k(1, 0)`*¹*           | 0.535ms  (150.8x)         | 0.201ms  (401.0x)           | 0.155ms  (521.9x) 🟢      | 0.287ms  (280.9x)         | 0.181ms  (445.7x)           | 0.161ms  (501.3x)         | *80.634ms (1.0x)* 🟠         |
| `Count_x_100k(2, 0)`*¹˒²*         | 0.271ms  (455.4x)         | 0.103ms (1195.2x)           | 0.080ms (1532.7x) 🟢      | 0.148ms  (831.5x)         | 0.093ms (1326.5x)           | 0.083ms (1491.0x)         | *123.229ms (1.0x)* 🟠        |
| `Count_x_100k(4, 0)`*¹˒²*         | 0.144ms (1320.5x)         | 0.061ms (3106.4x)           | 0.046ms (4132.8x) 🟢      | 0.083ms (2294.1x)         | 0.103ms (1846.0x)           | 0.051ms (3730.1x)         | *189.491ms (1.0x)* 🟠        |
| `Count_x_100k(1, 100)`*¹*         | 3.685ms   (25.7x)         | 1.444ms   (65.7x) 🟢        | 1.693ms   (56.0x)         | 3.191ms   (29.7x)         | 1.544ms   (61.4x)           | 1.614ms   (58.8x)         | *94.884ms (1.0x)* 🟠         |
| `Count_x_100k(2, 100)`*¹˒²*       | 1.845ms   (73.9x)         | 0.736ms  (185.3x) 🟢        | 0.887ms  (153.8x)         | 1.595ms   (85.5x)         | 0.773ms  (176.6x)           | 0.825ms  (165.4x)         | *136.423ms (1.0x)* 🟠        |
| `Count_x_100k(4, 100)`*¹˒²*       | 1.613ms  (113.9x)         | 0.708ms  (259.3x)           | 0.707ms  (259.9x)         | 1.460ms  (125.8x)         | 0.746ms  (246.2x)           | 0.689ms  (266.5x) 🟢      | *183.655ms (1.0x)* 🟠        |
| `ToNativeArrayKeys(1, 10000)`     | 0.150ms    (1.2x)         | 0.121ms    (1.5x)           | 0.081ms    (2.2x) 🟢      | 0.201ms    (0.9x) 🟠      | 0.129ms    (1.4x)           | 0.111ms    (1.6x)         | *0.180ms (1.0x)*             |
| `ToNativeArrayKeys(1, 100000)`    | 1.652ms    (1.4x)         | 1.243ms    (1.9x)           | 1.052ms    (2.2x) 🟢      | 1.796ms    (1.3x)         | 1.402ms    (1.7x)           | 1.053ms    (2.2x)         | *2.336ms (1.0x)* 🟠          |
| `ToNativeArrayKeys(1, 1000000)`   | 36.653ms    (0.7x) 🟠     | 17.665ms    (1.4x)          | 12.848ms    (2.0x)        | 36.236ms    (0.7x)        | 18.985ms    (1.3x)          | 10.798ms    (2.3x) 🟢     | *25.361ms (1.0x)*            |
| `ToNativeArrayValues(1, 10000)`   | 0.150ms    (0.9x)         | 0.121ms    (1.2x)           | 0.080ms    (1.8x)         | 0.151ms    (0.9x) 🟠      | 0.122ms    (1.2x)           | 0.079ms    (1.8x) 🟢      | *0.141ms (1.0x)*             |
| `ToNativeArrayValues(1, 100000)`  | 1.626ms    (1.1x)         | 1.235ms    (1.4x)           | 0.862ms    (2.1x) 🟢      | 1.629ms    (1.1x)         | 1.229ms    (1.4x)           | 0.872ms    (2.0x)         | *1.773ms (1.0x)* 🟠          |
| `ToNativeArrayValues(1, 1000000)` | 20.867ms    (1.1x)        | 15.371ms    (1.5x)          | 11.046ms    (2.1x)        | 24.782ms    (1.0x) 🟠     | 17.345ms    (1.4x)          | 10.785ms    (2.2x) 🟢     | *23.593ms (1.0x)*            |
| `Insert(1, 10000)`                | 0.353ms    (5.6x)         | 0.209ms    (9.5x)           | 0.212ms    (9.3x)         | 0.320ms    (6.2x)         | 0.205ms    (9.6x) 🟢        | 0.211ms    (9.4x)         | *1.979ms (1.0x)* 🟠          |
| `Insert(2, 10000)`*²*             | 0.543ms    (4.3x)         | 0.514ms    (4.5x)           | 0.329ms    (7.1x)         | 0.400ms    (5.8x)         | 0.266ms    (8.8x) 🟢        | 0.379ms    (6.1x)         | *2.330ms (1.0x)* 🟠          |
| `Insert(4, 10000)`*²*             | 0.449ms    (5.2x)         | 0.290ms    (8.0x)           | 0.217ms   (10.6x) 🟢      | 0.285ms    (8.1x)         | 0.249ms    (9.3x)           | 0.270ms    (8.6x)         | *2.314ms (1.0x)* 🟠          |
| `Insert(1, 100000)`               | 3.818ms    (5.8x)         | 2.325ms    (9.5x)           | 2.281ms    (9.6x)         | 3.442ms    (6.4x)         | 2.218ms    (9.9x) 🟢        | 2.285ms    (9.6x)         | *21.983ms (1.0x)* 🟠         |
| `Insert(2, 100000)`*²*            | 5.611ms    (4.1x)         | 4.873ms    (4.8x)           | 3.254ms    (7.1x)         | 4.090ms    (5.7x)         | 2.645ms    (8.8x) 🟢        | 3.080ms    (7.5x)         | *23.181ms (1.0x)* 🟠         |
| `Insert(4, 100000)`*²*            | 4.523ms    (5.3x)         | 2.897ms    (8.3x)           | 2.156ms   (11.2x)         | 3.541ms    (6.8x)         | 2.201ms   (11.0x)           | 2.096ms   (11.5x) 🟢      | *24.121ms (1.0x)* 🟠         |
| `Insert(1, 1000000)`              | 60.383ms    (7.0x)        | 36.007ms   (11.8x) 🟢       | 36.109ms   (11.8x)        | 53.923ms    (7.9x)        | 36.016ms   (11.8x)          | 36.542ms   (11.6x)        | *425.024ms (1.0x)* 🟠        |
| `Insert(2, 1000000)`*²*           | 62.895ms    (7.1x)        | 50.118ms    (8.9x)          | 40.151ms   (11.1x)        | 50.271ms    (8.8x)        | 39.964ms   (11.1x)          | 38.384ms   (11.6x) 🟢     | *443.920ms (1.0x)* 🟠        |
| `Insert(4, 1000000)`*²*           | 42.694ms    (7.6x)        | 36.240ms    (9.0x)          | 24.896ms   (13.1x)        | 30.771ms   (10.6x)        | 24.408ms   (13.3x) 🟢       | 25.097ms   (13.0x)        | *325.595ms (1.0x)* 🟠        |
| `AddGrow(1, 4, 1048576)`*³*       | 72.547ms    (5.9x)        | 39.816ms   (10.7x)          | 39.313ms   (10.8x)        | 71.458ms    (6.0x)        | 39.813ms   (10.7x)          | 39.265ms   (10.8x) 🟢     | *425.495ms (1.0x)* 🟠        |
| `AddGrow(1, 65536, 1048576)`*³*   | 68.046ms   (10.0x)        | 39.004ms   (17.5x)          | 38.764ms   (17.6x)        | 67.198ms   (10.2x)        | 38.417ms   (17.8x) 🟢       | 38.540ms   (17.7x)        | *683.780ms (1.0x)* 🟠        |
| `Contains(1, 10000)`              | 0.145ms    (1.6x)         | 0.033ms    (6.9x)           | 0.028ms    (8.0x) 🟢      | 0.118ms    (1.9x)         | 0.036ms    (6.3x)           | 0.029ms    (7.9x)         | *0.228ms (1.0x)* 🟠          |
| `Contains(2, 10000)`*²*           | 0.127ms    (1.5x)         | 0.042ms    (4.6x)           | 0.036ms    (5.4x) 🟢      | 0.111ms    (1.8x)         | 0.038ms    (5.2x)           | 0.036ms    (5.3x)         | *0.194ms (1.0x)* 🟠          |
| `Contains(4, 10000)`*²*           | 0.167ms    (1.3x)         | 0.052ms    (4.1x)           | 0.055ms    (3.9x)         | 0.100ms    (2.1x)         | 0.068ms    (3.1x)           | 0.039ms    (5.5x) 🟢      | *0.213ms (1.0x)* 🟠          |
| `Contains(1, 100000)`             | 2.247ms    (1.5x)         | 0.650ms    (5.0x)           | 0.498ms    (6.6x) 🟢      | 1.849ms    (1.8x)         | 0.650ms    (5.0x)           | 0.500ms    (6.6x)         | *3.277ms (1.0x)* 🟠          |
| `Contains(2, 100000)`*²*          | 1.226ms    (1.4x)         | 0.403ms    (4.4x)           | 0.328ms    (5.4x) 🟢      | 1.077ms    (1.6x)         | 0.408ms    (4.3x)           | 0.330ms    (5.3x)         | *1.761ms (1.0x)* 🟠          |
| `Contains(4, 100000)`*²*          | 1.065ms    (2.2x)         | 0.334ms    (7.0x)           | 0.268ms    (8.7x) 🟢      | 0.883ms    (2.6x)         | 0.319ms    (7.3x)           | 0.540ms    (4.3x)         | *2.332ms (1.0x)* 🟠          |
| `Contains(1, 1000000)`            | 66.122ms    (1.5x)        | 16.585ms    (5.9x)          | 12.089ms    (8.0x) 🟢     | 59.523ms    (1.6x)        | 17.021ms    (5.7x)          | 12.118ms    (8.0x)        | *97.095ms (1.0x)* 🟠         |
| `Contains(2, 1000000)`*²*         | 31.624ms    (1.6x)        | 8.707ms    (5.8x)           | 6.498ms    (7.8x) 🟢      | 29.568ms    (1.7x)        | 8.714ms    (5.8x)           | 6.511ms    (7.8x)         | *50.806ms (1.0x)* 🟠         |
| `Contains(4, 1000000)`*²*         | 25.406ms    (1.7x)        | 6.925ms    (6.3x)           | 5.677ms    (7.7x)         | 22.636ms    (1.9x)        | 6.716ms    (6.5x)           | 5.494ms    (7.9x) 🟢      | *43.614ms (1.0x)* 🟠         |
| `IndexedRead(1, 10000)`           | 0.145ms    (1.6x)         | 0.029ms    (8.1x) 🟢        | 0.032ms    (7.3x)         | 0.137ms    (1.7x)         | 0.031ms    (7.5x)           | 0.031ms    (7.7x)         | *0.235ms (1.0x)* 🟠          |
| `IndexedRead(2, 10000)`*²*        | 0.202ms    (1.4x)         | 0.059ms    (4.9x)           | 0.062ms    (4.7x)         | 0.191ms    (1.5x)         | 0.041ms    (7.0x) 🟢        | 0.066ms    (4.4x)         | *0.288ms (1.0x)* 🟠          |
| `IndexedRead(4, 10000)`*²*        | 0.581ms    (0.9x) 🟠      | 0.129ms    (3.9x)           | 0.098ms    (5.1x)         | 0.264ms    (1.9x)         | 0.071ms    (7.1x) 🟢        | 0.097ms    (5.2x)         | *0.501ms (1.0x)*             |
| `IndexedRead(1, 100000)`          | 2.216ms    (1.5x)         | 0.592ms    (5.6x) 🟢        | 0.604ms    (5.5x)         | 2.140ms    (1.5x)         | 0.600ms    (5.5x)           | 0.607ms    (5.4x)         | *3.291ms (1.0x)* 🟠          |
| `IndexedRead(2, 100000)`*²*       | 2.416ms    (1.5x)         | 0.698ms    (5.0x)           | 0.692ms    (5.1x) 🟢      | 2.270ms    (1.5x)         | 0.707ms    (5.0x)           | 0.743ms    (4.7x)         | *3.506ms (1.0x)* 🟠          |
| `IndexedRead(4, 100000)`*²*       | 4.094ms    (1.4x)         | 1.071ms    (5.4x)           | 1.053ms    (5.5x) 🟢      | 7.214ms    (0.8x) 🟠      | 1.058ms    (5.5x)           | 1.794ms    (3.2x)         | *5.780ms (1.0x)*             |
| `IndexedRead(1, 1000000)`         | 64.603ms    (1.5x)        | 17.636ms    (5.5x)          | 17.726ms    (5.5x)        | 62.234ms    (1.6x)        | 17.652ms    (5.5x)          | 17.411ms    (5.6x) 🟢     | *96.983ms (1.0x)* 🟠         |
| `IndexedRead(2, 1000000)`*²*      | 63.460ms    (1.6x)        | 17.217ms    (5.8x)          | 17.124ms    (5.8x)        | 61.578ms    (1.6x)        | 17.127ms    (5.8x)          | 16.957ms    (5.8x) 🟢     | *99.146ms (1.0x)* 🟠         |
| `IndexedRead(4, 1000000)`*²*      | 68.243ms    (1.4x)        | 28.318ms    (3.4x)          | 27.812ms    (3.5x)        | 69.192ms    (1.4x)        | 26.990ms    (3.6x) 🟢       | 27.918ms    (3.5x)        | *97.383ms (1.0x)* 🟠         |
| `IndexedWrite(1, 10000)`          | 0.164ms    (2.8x)         | 0.051ms    (9.0x)           | 0.041ms   (11.0x)         | 0.131ms    (3.5x)         | 0.040ms   (11.4x)           | 0.038ms   (12.0x) 🟢      | *0.456ms (1.0x)* 🟠          |
| `IndexedWrite(1, 100000)`         | 2.333ms    (2.6x)         | 0.901ms    (6.7x)           | 0.731ms    (8.3x)         | 2.077ms    (2.9x)         | 0.781ms    (7.8x)           | 0.710ms    (8.5x) 🟢      | *6.067ms (1.0x)* 🟠          |
| `IndexedWrite(1, 1000000)`        | 76.627ms    (2.5x)        | 67.296ms    (2.8x) 🟢       | 68.052ms    (2.8x)        | 85.977ms    (2.2x)        | 68.516ms    (2.8x)          | 69.221ms    (2.8x)        | *191.108ms (1.0x)* 🟠        |
| `TryGetValue(1, 10000)`           | 0.154ms    (1.3x)         | 0.043ms    (4.8x)           | 0.032ms    (6.4x)         | 0.117ms    (1.8x)         | 0.043ms    (4.8x)           | 0.031ms    (6.6x) 🟢      | *0.206ms (1.0x)* 🟠          |
| `TryGetValue(2, 10000)`*²*        | 0.125ms    (1.4x)         | 0.045ms    (3.8x)           | 0.036ms    (4.8x) 🟢      | 0.110ms    (1.6x)         | 0.046ms    (3.7x)           | 0.036ms    (4.8x)         | *0.172ms (1.0x)* 🟠          |
| `TryGetValue(4, 10000)`*²*        | 0.170ms    (0.7x) 🟠      | 0.051ms    (2.4x)           | 0.038ms    (3.3x) 🟢      | 0.103ms    (1.2x)         | 0.078ms    (1.6x)           | 0.039ms    (3.2x)         | *0.125ms (1.0x)*             |
| `TryGetValue(1, 100000)`          | 2.187ms    (1.5x)         | 0.839ms    (4.0x)           | 0.616ms    (5.4x) 🟢      | 1.925ms    (1.7x)         | 0.815ms    (4.1x)           | 0.628ms    (5.3x)         | *3.336ms (1.0x)* 🟠          |
| `TryGetValue(2, 100000)`*²*       | 1.216ms    (1.5x)         | 0.478ms    (3.7x)           | 0.342ms    (5.2x) 🟢      | 1.072ms    (1.7x)         | 0.489ms    (3.6x)           | 0.391ms    (4.5x)         | *1.769ms (1.0x)* 🟠          |
| `TryGetValue(4, 100000)`*²*       | 1.042ms    (1.7x)         | 0.408ms    (4.3x) 🟢        | 0.617ms    (2.8x)         | 0.899ms    (1.9x)         | 0.915ms    (1.9x)           | 0.636ms    (2.7x)         | *1.736ms (1.0x)* 🟠          |
| `TryGetValue(1, 1000000)`         | 65.145ms    (1.5x)        | 25.321ms    (3.8x)          | 19.163ms    (5.0x)        | 59.895ms    (1.6x)        | 23.602ms    (4.1x)          | 18.464ms    (5.2x) 🟢     | *96.395ms (1.0x)* 🟠         |
| `TryGetValue(2, 1000000)`*²*      | 31.724ms    (1.5x)        | 12.422ms    (4.0x)          | 9.631ms    (5.1x)         | 30.638ms    (1.6x)        | 12.432ms    (4.0x)          | 9.589ms    (5.1x) 🟢      | *49.107ms (1.0x)* 🟠         |
| `TryGetValue(4, 1000000)`*²*      | 25.831ms    (1.6x)        | 10.070ms    (4.1x)          | 7.992ms    (5.2x) 🟢      | 23.710ms    (1.8x)        | 10.235ms    (4.1x)          | 8.062ms    (5.2x)         | *41.691ms (1.0x)* 🟠         |
| `Remove(1, 10000)`                | 0.120ms    (4.5x)         | 0.214ms    (2.5x)           | 0.050ms   (11.0x)         | 0.095ms    (5.7x)         | 0.050ms   (10.9x)           | 0.049ms   (11.1x) 🟢      | *0.545ms (1.0x)* 🟠          |
| `Remove(1, 100000)`               | 1.928ms    (3.4x)         | 0.929ms    (7.0x)           | 0.805ms    (8.1x)         | 1.682ms    (3.9x)         | 0.867ms    (7.5x)           | 0.793ms    (8.2x) 🟢      | *6.512ms (1.0x)* 🟠          |
| `Remove(1, 1000000)`              | 64.353ms    (3.1x)        | 56.893ms    (3.5x) 🟢       | 57.422ms    (3.4x)        | 62.480ms    (3.1x)        | 57.884ms    (3.4x)          | 57.271ms    (3.4x)        | *196.582ms (1.0x)* 🟠        |
| `Foreach(1, 10000)`               | 0.156ms    (2.5x)         | 0.086ms    (4.6x)           | 0.073ms    (5.4x) 🟢      | 0.143ms    (2.7x)         | 0.080ms    (4.9x)           | 0.080ms    (4.9x)         | *0.393ms (1.0x)* 🟠          |
| `Foreach(1, 100000)`              | 2.094ms    (2.3x)         | 0.931ms    (5.2x)           | 0.839ms    (5.8x) 🟢      | 1.862ms    (2.6x)         | 0.885ms    (5.5x)           | 0.884ms    (5.5x)         | *4.876ms (1.0x)* 🟠          |
| `Foreach(1, 1000000)`             | 28.544ms    (2.0x)        | 11.060ms    (5.1x)          | 10.143ms    (5.6x) 🟢     | 27.167ms    (2.1x)        | 10.318ms    (5.5x)          | 10.364ms    (5.5x)        | *56.852ms (1.0x)* 🟠         |

*¹* Optimizations were disabled to perform this benchmark

*²* Benchmark run on parallel job workers - results may vary

*³* AddGrow(workers, capacity, growTo) -- Incrementally grows from `capacity` until reaching size of `growTo`

### *ParallelHashSet* ##parallelhashset

| Functionality                   | NativeParallelHashSet (S) | NativeParallelHashSet (S+B) | NativeParallelHashSet (B) | UnsafeParallelHashSet (S) | UnsafeParallelHashSet (S+B) | UnsafeParallelHashSet (B) | *HashSet w/lock (BCL)*  |
| ------------------------------- | ------------------------- | --------------------------- | ------------------------- | ------------------------- | --------------------------- | ------------------------- | ----------------------- |
| `IsEmpty_x_100k(1, 0)`*¹*       | 0.482ms   (9.2x)          | 0.115ms  (38.5x) 🟢         | 0.176ms  (25.1x)          | 0.301ms  (14.7x)          | 0.183ms  (24.2x)            | 0.171ms  (25.8x)          | *4.422ms (1.0x)* 🟠     |
| `IsEmpty_x_100k(2, 0)`*¹˒²*     | 0.244ms  (61.6x)          | 0.060ms (250.7x) 🟢         | 0.092ms (164.2x)          | 0.154ms  (98.0x)          | 0.091ms (166.2x)            | 0.086ms (175.3x)          | *15.041ms (1.0x)* 🟠    |
| `IsEmpty_x_100k(4, 0)`*¹˒²*     | 0.274ms (114.9x)          | 0.037ms (849.5x) 🟢         | 0.048ms (659.1x)          | 0.153ms (206.3x)          | 0.049ms (640.4x)            | 0.047ms (667.5x)          | *31.474ms (1.0x)* 🟠    |
| `IsEmpty_x_100k(1, 100)`*¹*     | 0.567ms   (7.8x)          | 0.128ms  (34.7x)            | 0.201ms  (22.0x)          | 0.401ms  (11.0x)          | 0.142ms  (31.2x)            | 0.108ms  (40.9x) 🟢       | *4.424ms (1.0x)* 🟠     |
| `IsEmpty_x_100k(2, 100)`*¹˒²*   | 0.288ms  (52.5x)          | 0.068ms (221.0x)            | 0.105ms (143.5x)          | 0.217ms  (69.9x)          | 0.074ms (205.5x)            | 0.057ms (264.5x) 🟢       | *15.128ms (1.0x)* 🟠    |
| `IsEmpty_x_100k(4, 100)`*¹˒²*   | 0.315ms  (99.6x)          | 0.072ms (437.6x)            | 0.058ms (538.5x)          | 0.185ms (169.8x)          | 0.046ms (686.0x)            | 0.037ms (842.3x) 🟢       | *31.420ms (1.0x)* 🟠    |
| `Count_x_100k(1, 0)`*¹*         | 0.535ms   (8.3x)          | 0.201ms  (22.1x)            | 0.161ms  (27.6x)          | 0.456ms   (9.7x)          | 0.181ms  (24.5x)            | 0.161ms  (27.6x) 🟢       | *4.435ms (1.0x)* 🟠     |
| `Count_x_100k(2, 0)`*¹˒²*       | 0.271ms  (59.0x)          | 0.103ms (155.8x)            | 0.082ms (193.8x) 🟢       | 0.231ms  (69.1x)          | 0.093ms (171.9x)            | 0.083ms (192.9x)          | *15.965ms (1.0x)* 🟠    |
| `Count_x_100k(4, 0)`*¹˒²*       | 0.224ms (173.7x)          | 0.115ms (337.8x)            | 0.049ms (789.8x) 🟢       | 0.164ms (237.0x)          | 0.054ms (724.3x)            | 0.073ms (529.1x)          | *38.861ms (1.0x)* 🟠    |
| `Count_x_100k(1, 100)`*¹*       | 4.426ms   (1.0x)          | 1.620ms   (2.7x)            | 1.517ms   (2.9x) 🟢       | 3.323ms   (1.3x)          | 1.538ms   (2.9x)            | 2.268ms   (2.0x)          | *4.438ms (1.0x)* 🟠     |
| `Count_x_100k(2, 100)`*¹˒²*     | 2.462ms   (6.2x)          | 1.020ms  (14.9x)            | 0.763ms  (19.9x) 🟢       | 1.683ms   (9.0x)          | 0.783ms  (19.4x)            | 0.824ms  (18.4x)          | *15.206ms (1.0x)* 🟠    |
| `Count_x_100k(4, 100)`*¹˒²*     | 1.778ms  (18.1x)          | 0.848ms  (37.9x)            | 0.723ms  (44.5x)          | 1.556ms  (20.7x)          | 0.744ms  (43.2x)            | 0.665ms  (48.4x) 🟢       | *32.165ms (1.0x)* 🟠    |
| `ToNativeArray(1, 10000)`       | 0.039ms   (0.5x) 🟠       | 0.021ms   (0.8x)            | 0.009ms   (1.9x)          | 0.038ms   (0.5x)          | 0.021ms   (0.8x)            | 0.009ms   (1.9x) 🟢       | *0.018ms (1.0x)*        |
| `ToNativeArray(1, 100000)`      | 0.428ms   (0.4x)          | 0.202ms   (0.9x)            | 0.084ms   (2.1x) 🟢       | 0.437ms   (0.4x) 🟠       | 0.202ms   (0.9x)            | 0.084ms   (2.1x) 🟢       | *0.175ms (1.0x)*        |
| `ToNativeArray(1, 1000000)`     | 4.489ms   (0.4x)          | 2.192ms   (0.9x)            | 1.051ms   (1.9x) 🟢       | 4.690ms   (0.4x) 🟠       | 2.187ms   (0.9x)            | 1.053ms   (1.9x)          | *1.964ms (1.0x)*        |
| `Insert(1, 10000)`              | 0.330ms  (11.3x)          | 0.188ms  (19.7x)            | 0.196ms  (19.0x)          | 0.301ms  (12.4x)          | 0.186ms  (20.0x) 🟢         | 0.202ms  (18.4x)          | *3.715ms (1.0x)* 🟠     |
| `Insert(2, 10000)`*²*           | 0.468ms  (33.2x)          | 0.487ms  (31.9x)            | 0.264ms  (58.9x)          | 0.317ms  (49.0x)          | 0.260ms  (59.8x) 🟢         | 0.331ms  (47.0x)          | *15.537ms (1.0x)* 🟠    |
| `Insert(4, 10000)`*²*           | 0.285ms (168.3x)          | 0.319ms (150.7x)            | 0.169ms (283.9x) 🟢       | 0.244ms (196.6x)          | 0.207ms (231.4x)            | 0.225ms (212.9x)          | *48.000ms (1.0x)* 🟠    |
| `Insert(1, 100000)`             | 3.300ms   (1.8x)          | 1.880ms   (3.1x)            | 1.957ms   (3.0x)          | 3.014ms   (1.9x)          | 1.857ms   (3.2x) 🟢         | 2.079ms   (2.8x)          | *5.872ms (1.0x)* 🟠     |
| `Insert(2, 100000)`*²*          | 4.849ms   (3.2x)          | 4.541ms   (3.4x)            | 2.555ms   (6.1x) 🟢       | 3.014ms   (5.1x)          | 3.288ms   (4.7x)            | 3.275ms   (4.7x)          | *15.510ms (1.0x)* 🟠    |
| `Insert(4, 100000)`*²*          | 2.759ms  (16.9x)          | 2.462ms  (19.0x)            | 1.494ms  (31.3x) 🟢       | 2.236ms  (20.9x)          | 2.221ms  (21.0x)            | 1.804ms  (25.9x)          | *46.684ms (1.0x)* 🟠    |
| `Insert(1, 1000000)`            | 33.989ms   (1.8x)         | 19.882ms   (3.1x)           | 20.803ms   (3.0x)         | 31.233ms   (2.0x)         | 19.637ms   (3.1x) 🟢        | 20.789ms   (3.0x)         | *61.451ms (1.0x)* 🟠    |
| `Insert(2, 1000000)`*²*         | 48.854ms   (1.4x)         | 46.969ms   (1.5x)           | 27.594ms   (2.5x) 🟢      | 31.891ms   (2.2x)         | 33.639ms   (2.1x)           | 35.067ms   (2.0x)         | *70.068ms (1.0x)* 🟠    |
| `Insert(4, 1000000)`*²*         | 32.946ms   (2.8x)         | 28.736ms   (3.2x)           | 18.753ms   (4.9x) 🟢      | 21.186ms   (4.3x)         | 24.702ms   (3.7x)           | 21.382ms   (4.3x)         | *91.349ms (1.0x)* 🟠    |
| `AddGrow(1, 4, 1048576)`*³*     | 36.009ms   (1.8x)         | 12.228ms   (5.4x)           | 11.699ms   (5.6x) 🟢      | 34.592ms   (1.9x)         | 11.898ms   (5.5x)           | 11.875ms   (5.6x)         | *65.912ms (1.0x)* 🟠    |
| `AddGrow(1, 65536, 1048576)`*³* | 33.973ms   (1.7x)         | 11.863ms   (4.9x)           | 11.247ms   (5.2x)         | 32.550ms   (1.8x)         | 11.464ms   (5.1x)           | 11.203ms   (5.2x) 🟢      | *58.064ms (1.0x)* 🟠    |
| `Contains(1, 10000)`            | 0.109ms   (5.6x)          | 0.019ms  (32.3x)            | 0.013ms  (47.2x)          | 0.095ms   (6.4x)          | 0.017ms  (35.8x)            | 0.010ms  (60.2x) 🟢       | *0.611ms (1.0x)* 🟠     |
| `Contains(2, 10000)`*²*         | 0.101ms (141.6x)          | 0.019ms (749.5x) 🟢         | 0.021ms (683.2x)          | 0.060ms (239.8x)          | 0.019ms (747.6x)            | 0.021ms (683.2x)          | *14.279ms (1.0x)* 🟠    |
| `Contains(4, 10000)`*²*         | 0.098ms (128.3x)          | 0.031ms (402.6x)            | 0.023ms (559.2x)          | 0.057ms (219.8x)          | 0.021ms (607.8x) 🟢         | 0.022ms (561.7x)          | *12.582ms (1.0x)* 🟠    |
| `Contains(1, 100000)`           | 1.531ms   (4.6x)          | 0.284ms  (24.8x)            | 0.191ms  (36.8x)          | 1.345ms   (5.2x)          | 0.300ms  (23.5x)            | 0.191ms  (36.9x) 🟢       | *7.043ms (1.0x)* 🟠     |
| `Contains(2, 100000)`*²*        | 0.925ms  (23.2x)          | 0.225ms  (95.8x)            | 0.165ms (130.4x) 🟢       | 0.827ms  (26.0x)          | 0.227ms  (94.7x)            | 0.166ms (129.7x)          | *21.506ms (1.0x)* 🟠    |
| `Contains(4, 100000)`*²*        | 0.717ms  (46.9x)          | 0.204ms (164.7x)            | 0.120ms (279.4x) 🟢       | 0.689ms  (48.8x)          | 0.389ms  (86.5x)            | 0.275ms (122.2x)          | *33.617ms (1.0x)* 🟠    |
| `Contains(1, 1000000)`          | 18.170ms   (4.5x)         | 3.754ms  (21.7x)            | 2.522ms  (32.4x)          | 16.496ms   (4.9x)         | 3.749ms  (21.8x)            | 2.491ms  (32.8x) 🟢       | *81.628ms (1.0x)* 🟠    |
| `Contains(2, 1000000)`*²*       | 11.131ms   (7.8x)         | 2.652ms  (32.7x)            | 2.045ms  (42.5x) 🟢       | 9.589ms   (9.1x)          | 2.733ms  (31.8x)            | 2.076ms  (41.8x)          | *86.828ms (1.0x)* 🟠    |
| `Contains(4, 1000000)`*²*       | 8.584ms  (12.8x)          | 3.407ms  (32.3x)            | 2.220ms  (49.5x)          | 8.219ms  (13.4x)          | 2.053ms  (53.5x) 🟢         | 2.324ms  (47.3x)          | *109.936ms (1.0x)* 🟠   |
| `Remove(1, 10000)`              | 0.139ms   (4.4x)          | 0.065ms   (9.3x)            | 0.059ms  (10.3x) 🟢       | 0.110ms   (5.6x)          | 0.061ms  (10.0x)            | 0.060ms  (10.2x)          | *0.611ms (1.0x)* 🟠     |
| `Remove(1, 100000)`             | 1.694ms   (3.9x)          | 0.798ms   (8.4x)            | 0.689ms   (9.7x) 🟢       | 1.314ms   (5.1x)          | 0.707ms   (9.5x)            | 0.695ms   (9.6x)          | *6.684ms (1.0x)* 🟠     |
| `Remove(1, 1000000)`            | 20.302ms   (3.7x)         | 9.389ms   (8.0x)            | 7.772ms   (9.7x) 🟢       | 15.004ms   (5.0x)         | 8.087ms   (9.3x)            | 7.788ms   (9.6x)          | *75.082ms (1.0x)* 🟠    |
| `Foreach(1, 10000)`             | 0.097ms   (0.4x) 🟠       | 0.024ms   (1.4x)            | 0.018ms   (1.9x)          | 0.068ms   (0.5x)          | 0.018ms   (2.0x) 🟢         | 0.018ms   (2.0x)          | *0.035ms (1.0x)*        |
| `Foreach(1, 100000)`            | 0.929ms   (0.4x) 🟠       | 0.208ms   (1.7x)            | 0.145ms   (2.4x)          | 0.605ms   (0.6x)          | 0.144ms   (2.4x) 🟢         | 0.144ms   (2.4x)          | *0.344ms (1.0x)*        |
| `Foreach(1, 1000000)`           | 9.214ms   (0.4x) 🟠       | 2.094ms   (1.7x)            | 1.470ms   (2.5x)          | 5.994ms   (0.6x)          | 1.462ms   (2.5x) 🟢         | 1.491ms   (2.4x)          | *3.611ms (1.0x)*        |
| `UnionWith(1, 10000)`           | 0.539ms   (0.4x) 🟠       | 0.227ms   (1.1x)            | 0.216ms   (1.1x)          | 0.490ms   (0.5x)          | 0.214ms   (1.1x) 🟢         | 0.214ms   (1.1x)          | *0.242ms (1.0x)*        |
| `UnionWith(1, 100000)`          | 5.532ms   (0.5x) 🟠       | 2.397ms   (1.1x)            | 2.465ms   (1.1x)          | 4.955ms   (0.5x)          | 2.263ms   (1.2x)            | 2.242ms   (1.2x) 🟢       | *2.687ms (1.0x)*        |
| `UnionWith(1, 1000000)`         | 79.156ms   (0.6x) 🟠      | 41.627ms   (1.2x)           | 36.230ms   (1.4x)         | 72.721ms   (0.7x)         | 36.150ms   (1.4x) 🟢        | 36.708ms   (1.3x)         | *48.928ms (1.0x)*       |
| `IntersectWith(1, 10000)`       | 0.318ms   (0.9x) 🟠       | 0.135ms   (2.1x)            | 0.118ms   (2.4x)          | 0.264ms   (1.1x)          | 0.110ms   (2.6x) 🟢         | 0.112ms   (2.5x)          | *0.286ms (1.0x)*        |
| `IntersectWith(1, 100000)`      | 3.460ms   (0.9x) 🟠       | 1.490ms   (2.0x)            | 1.322ms   (2.2x)          | 2.881ms   (1.0x)          | 1.259ms   (2.4x) 🟢         | 1.280ms   (2.3x)          | *2.963ms (1.0x)*        |
| `IntersectWith(1, 1000000)`     | 50.949ms   (1.3x)         | 18.330ms   (3.6x)           | 16.081ms   (4.1x)         | 41.292ms   (1.6x)         | 15.816ms   (4.1x) 🟢        | 15.828ms   (4.1x)         | *65.453ms (1.0x)* 🟠    |
| `ExceptWith(1, 10000)`          | 0.269ms   (0.9x) 🟠       | 0.213ms   (1.1x)            | 0.118ms   (2.0x)          | 0.197ms   (1.2x)          | 0.115ms   (2.0x)            | 0.112ms   (2.1x) 🟢       | *0.230ms (1.0x)*        |
| `ExceptWith(1, 100000)`         | 2.960ms   (0.8x) 🟠       | 1.408ms   (1.8x)            | 1.335ms   (1.8x)          | 2.181ms   (1.1x)          | 1.320ms   (1.9x)            | 1.280ms   (1.9x) 🟢       | *2.467ms (1.0x)*        |
| `ExceptWith(1, 1000000)`        | 40.054ms   (1.0x)         | 20.188ms   (2.0x)           | 18.223ms   (2.2x)         | 30.004ms   (1.4x)         | 18.972ms   (2.2x)           | 17.592ms   (2.3x) 🟢      | *40.898ms (1.0x)* 🟠    |

*¹* Optimizations were disabled to perform this benchmark

*²* Benchmark run on parallel job workers - results may vary

*³* AddGrow(workers, capacity, growTo) -- Incrementally grows from `capacity` until reaching size of `growTo`

### *QueueParallelWriter*

| Functionality                  | NativeQueueParallelWriter (S) | NativeQueueParallelWriter (S+B) | NativeQueueParallelWriter (B) | UnsafeQueueParallelWriter (S) | UnsafeQueueParallelWriter (S+B) | UnsafeQueueParallelWriter (B) | *ConcurrentQueue (BCL)* |
| ------------------------------ | ----------------------------- | ------------------------------- | ----------------------------- | ----------------------------- | ------------------------------- | ----------------------------- | ----------------------- |
| `EnqueueGrow(1, 10000)`*³*     | 0.063ms   (1.8x)              | 0.037ms   (3.1x)                | 0.027ms   (4.2x) 🟢           | ---                           | ---                             | ---                           | *0.112ms (1.0x)* 🟠     |
| `EnqueueGrow(2, 10000)`*²˒³*   | 0.036ms   (3.8x)              | 0.032ms   (4.3x)                | 0.022ms   (6.3x) 🟢           | ---                           | ---                             | ---                           | *0.136ms (1.0x)* 🟠     |
| `EnqueueGrow(4, 10000)`*²˒³*   | 0.041ms   (5.0x)              | 0.023ms   (9.1x) 🟢             | 0.028ms   (7.4x)              | ---                           | ---                             | ---                           | *0.205ms (1.0x)* 🟠     |
| `EnqueueGrow(1, 100000)`*³*    | 1.111ms   (1.0x) 🟠           | 0.196ms   (5.5x) 🟢             | 0.249ms   (4.3x)              | ---                           | ---                             | ---                           | *1.069ms (1.0x)*        |
| `EnqueueGrow(2, 100000)`*²˒³*  | 0.353ms  (43.1x)              | 0.129ms (118.3x) 🟢             | 0.141ms (107.9x)              | ---                           | ---                             | ---                           | *15.233ms (1.0x)* 🟠    |
| `EnqueueGrow(4, 100000)`*²˒³*  | 0.359ms (128.0x)              | 0.119ms (384.9x)                | 0.101ms (455.1x) 🟢           | ---                           | ---                             | ---                           | *45.962ms (1.0x)* 🟠    |
| `EnqueueGrow(1, 1000000)`*³*   | 6.964ms   (1.5x)              | 1.971ms   (5.3x) 🟢             | 2.470ms   (4.2x)              | ---                           | ---                             | ---                           | *10.493ms (1.0x)* 🟠    |
| `EnqueueGrow(2, 1000000)`*²˒³* | 3.587ms   (4.2x)              | 1.264ms  (12.0x) 🟢             | 1.353ms  (11.2x)              | ---                           | ---                             | ---                           | *15.213ms (1.0x)* 🟠    |
| `EnqueueGrow(4, 1000000)`*²˒³* | 3.119ms  (14.9x)              | 1.036ms  (44.8x)                | 0.915ms  (50.7x) 🟢           | ---                           | ---                             | ---                           | *46.400ms (1.0x)* 🟠    |
| `Enqueue(1, 10000)`*⁴*         | 0.063ms   (1.8x)              | 0.014ms   (8.0x) 🟢             | 0.019ms   (5.9x)              | ---                           | ---                             | ---                           | *0.112ms (1.0x)* 🟠     |
| `Enqueue(2, 10000)`*²˒⁴*       | 0.043ms   (3.1x)              | 0.015ms   (8.7x)                | 0.013ms  (10.1x) 🟢           | ---                           | ---                             | ---                           | *0.132ms (1.0x)* 🟠     |
| `Enqueue(4, 10000)`*²˒⁴*       | 0.036ms   (5.7x)              | 0.017ms  (11.8x)                | 0.016ms  (13.0x) 🟢           | ---                           | ---                             | ---                           | *0.203ms (1.0x)* 🟠     |
| `Enqueue(1, 100000)`*⁴*        | 0.628ms   (1.7x)              | 0.244ms   (4.4x)                | 0.187ms   (5.7x) 🟢           | ---                           | ---                             | ---                           | *1.068ms (1.0x)* 🟠     |
| `Enqueue(2, 100000)`*²˒⁴*      | 0.329ms  (46.3x)              | 0.142ms (107.6x)                | 0.107ms (142.5x) 🟢           | ---                           | ---                             | ---                           | *15.253ms (1.0x)* 🟠    |
| `Enqueue(4, 100000)`*²˒⁴*      | 0.305ms (154.5x)              | 0.077ms (611.1x)                | 0.061ms (767.5x) 🟢           | ---                           | ---                             | ---                           | *47.086ms (1.0x)* 🟠    |
| `Enqueue(1, 1000000)`*⁴*       | 6.283ms   (1.7x)              | 1.374ms   (7.6x) 🟢             | 1.869ms   (5.6x)              | ---                           | ---                             | ---                           | *10.486ms (1.0x)* 🟠    |
| `Enqueue(2, 1000000)`*²˒⁴*     | 3.268ms   (4.7x)              | 0.896ms  (17.0x) 🟢             | 1.029ms  (14.8x)              | ---                           | ---                             | ---                           | *15.201ms (1.0x)* 🟠    |
| `Enqueue(4, 1000000)`*²˒⁴*     | 2.931ms  (15.8x)              | 0.638ms  (72.4x) 🟢             | 0.697ms  (66.3x)              | ---                           | ---                             | ---                           | *46.225ms (1.0x)* 🟠    |

*²* Benchmark run on parallel job workers - results may vary

*³* EnqueueGrow(workers, insertions)

*⁴* Enqueue(workers, insertions)

### *Queue*

| Functionality             | NativeQueue (S)       | NativeQueue (S+B)     | NativeQueue (B)       | UnsafeQueue (S)       | UnsafeQueue (S+B)       | UnsafeQueue (B)         | *Queue (BCL)*          |
| ------------------------- | --------------------- | --------------------- | --------------------- | --------------------- | ----------------------- | ----------------------- | ---------------------- |
| `IsEmpty_x_100k(0)`*¹*    | 0.482ms  (0.2x) 🟠    | 0.181ms  (0.6x)       | 0.161ms  (0.6x)       | 0.232ms  (0.4x)       | 0.000ms  (334.3x) 🟢    | 0.000ms  (334.3x) 🟢    | *0.100ms (1.0x)*       |
| `IsEmpty_x_100k(100)`*¹*  | 0.503ms  (0.2x) 🟠    | 0.188ms  (0.5x)       | 0.141ms  (0.7x)       | 0.241ms  (0.4x)       | 0.000ms  (334.3x) 🟢    | 0.000ms  (334.3x) 🟢    | *0.100ms (1.0x)*       |
| `Count_x_100k(0)`*¹*      | 0.313ms  (0.4x) 🟠    | 0.193ms  (0.6x)       | 0.161ms  (0.7x)       | 0.189ms  (0.6x)       | 0.000ms  (401.2x) 🟢    | 0.000ms  (401.2x) 🟢    | *0.120ms (1.0x)*       |
| `Count_x_100k(100)`*¹*    | 0.351ms  (0.3x) 🟠    | 0.181ms  (0.7x)       | 0.141ms  (0.9x)       | 0.231ms  (0.5x)       | 0.000ms  (401.2x) 🟢    | 0.000ms  (343.9x)       | *0.120ms (1.0x)*       |
| `ToNativeArray(10000)`    | 0.003ms  (1.2x)       | 0.002ms  (1.7x)       | 0.002ms  (1.7x)       | 0.002ms  (1.8x) 🟢    | 0.002ms    (1.8x)       | 0.002ms    (1.8x) 🟢    | *0.003ms (1.0x)* 🟠    |
| `ToNativeArray(100000)`   | 0.096ms  (0.3x) 🟠    | 0.016ms  (1.9x)       | 0.015ms  (1.9x)       | 0.089ms  (0.3x)       | 0.015ms    (1.9x) 🟢    | 0.015ms    (1.9x)       | *0.029ms (1.0x)*       |
| `ToNativeArray(1000000)`  | 0.991ms  (0.8x) 🟠    | 0.197ms  (4.1x)       | 0.163ms  (5.0x)       | 0.897ms  (0.9x)       | 0.156ms    (5.2x) 🟢    | 0.161ms    (5.0x)       | *0.814ms (1.0x)*       |
| `EnqueueGrow(10000)`*³*   | 0.060ms (23.4x)       | 0.025ms (57.2x)       | 0.024ms (59.1x) 🟢    | 0.045ms (31.3x)       | 0.025ms   (56.4x)       | 0.026ms   (55.1x)       | *1.414ms (1.0x)* 🟠    |
| `EnqueueGrow(100000)`*³*  | 0.657ms  (0.6x) 🟠    | 0.249ms  (1.6x)       | 0.231ms  (1.8x) 🟢    | 0.445ms  (0.9x)       | 0.241ms    (1.7x)       | 0.248ms    (1.6x)       | *0.407ms (1.0x)*       |
| `EnqueueGrow(1000000)`*³* | 6.580ms  (0.6x) 🟠    | 2.452ms  (1.6x)       | 2.340ms  (1.7x) 🟢    | 4.509ms  (0.9x)       | 2.473ms    (1.6x)       | 2.509ms    (1.6x)       | *3.931ms (1.0x)*       |
| `Enqueue(10000)`*⁴*       | 0.060ms  (0.8x) 🟠    | 0.019ms  (2.4x)       | 0.018ms  (2.5x) 🟢    | 0.039ms  (1.2x)       | 0.020ms    (2.3x)       | 0.020ms    (2.2x)       | *0.046ms (1.0x)*       |
| `Enqueue(100000)`*⁴*      | 0.599ms  (0.7x) 🟠    | 0.193ms  (2.1x)       | 0.180ms  (2.3x) 🟢    | 0.392ms  (1.0x)       | 0.198ms    (2.1x)       | 0.196ms    (2.1x)       | *0.407ms (1.0x)*       |
| `Enqueue(1000000)`*⁴*     | 5.989ms  (0.7x) 🟠    | 2.048ms  (1.9x)       | 1.801ms  (2.2x) 🟢    | 3.933ms  (1.0x)       | 2.010ms    (2.0x)       | 2.011ms    (2.0x)       | *3.933ms (1.0x)*       |
| `Dequeue(10000)`          | 0.066ms  (0.6x) 🟠    | 0.025ms  (1.4x)       | 0.016ms  (2.4x) 🟢    | 0.045ms  (0.8x)       | 0.017ms    (2.2x)       | 0.017ms    (2.2x)       | *0.037ms (1.0x)*       |
| `Dequeue(100000)`         | 0.664ms  (0.6x) 🟠    | 0.248ms  (1.5x)       | 0.151ms  (2.4x) 🟢    | 0.455ms  (0.8x)       | 0.158ms    (2.3x)       | 0.159ms    (2.3x)       | *0.369ms (1.0x)*       |
| `Dequeue(1000000)`        | 6.640ms  (0.6x) 🟠    | 2.479ms  (1.5x)       | 1.503ms  (2.5x) 🟢    | 4.551ms  (0.8x)       | 1.578ms    (2.3x)       | 1.589ms    (2.3x)       | *3.690ms (1.0x)*       |
| `Peek(10000)`*¹*          | 0.030ms  (0.6x) 🟠    | 0.023ms  (0.8x)       | 0.014ms  (1.3x)       | 0.012ms  (1.5x)       | 0.000ms   (45.4x) 🟢    | 0.000ms   (45.4x) 🟢    | *0.018ms (1.0x)*       |
| `Peek(100000)`*¹*         | 0.302ms  (0.6x) 🟠    | 0.222ms  (0.8x)       | 0.134ms  (1.4x)       | 0.121ms  (1.5x)       | 0.001ms  (278.8x) 🟢    | 0.001ms  (258.9x)       | *0.181ms (1.0x)*       |
| `Peek(1000000)`*¹*        | 3.016ms  (0.6x) 🟠    | 2.213ms  (0.8x)       | 1.369ms  (1.3x)       | 1.205ms  (1.5x)       | 0.001ms (2127.8x)       | 0.001ms (2260.8x) 🟢    | *1.809ms (1.0x)*       |
| `Foreach(10000)`          | 0.028ms  (1.5x)       | 0.009ms  (4.9x)       | 0.007ms  (6.4x)       | 0.018ms  (2.3x)       | 0.003ms   (13.9x)       | 0.003ms   (14.1x) 🟢    | *0.042ms (1.0x)* 🟠    |
| `Foreach(100000)`         | 0.283ms  (1.5x)       | 0.082ms  (5.2x)       | 0.062ms  (6.9x)       | 0.182ms  (2.3x)       | 0.027ms   (15.5x) 🟢    | 0.027ms   (15.5x) 🟢    | *0.425ms (1.0x)* 🟠    |
| `Foreach(1000000)`        | 2.833ms  (1.5x)       | 0.812ms  (5.2x)       | 0.612ms  (6.9x)       | 1.819ms  (2.3x)       | 0.267ms   (15.9x)       | 0.267ms   (15.9x) 🟢    | *4.250ms (1.0x)* 🟠    |

*¹* Optimizations were disabled to perform this benchmark

*³* EnqueueGrow(insertions)

*⁴* Enqueue(insertions)

### *RingQueue*

| Functionality            | NativeRingQueue (S)  | NativeRingQueue (S+B) | NativeRingQueue (B)  | UnsafeRingQueue (S)  | UnsafeRingQueue (S+B) | UnsafeRingQueue (B)  | *Queue (BCL)*          |
| ------------------------ | -------------------- | --------------------- | -------------------- | -------------------- | --------------------- | -------------------- | ---------------------- |
| `IsEmpty_x_100k(0)`*¹*   | 0.174ms (0.7x) 🟠    | 0.108ms (1.1x) 🟢     | 0.108ms (1.1x) 🟢    | 0.121ms (1.0x)       | 0.111ms (1.1x)        | 0.110ms (1.1x)       | *0.121ms (1.0x)*       |
| `IsEmpty_x_100k(100)`*¹* | 0.161ms (0.8x) 🟠    | 0.108ms (1.1x)        | 0.108ms (1.1x) 🟢    | 0.120ms (1.0x)       | 0.111ms (1.1x)        | 0.110ms (1.1x)       | *0.120ms (1.0x)*       |
| `Count_x_100k(0)`*¹*     | 0.192ms (0.5x) 🟠    | 0.142ms (0.7x)        | 0.108ms (0.9x)       | 0.120ms (0.8x)       | 0.111ms (0.9x)        | 0.111ms (0.9x)       | *0.101ms (1.0x)* 🟢    |
| `Count_x_100k(100)`*¹*   | 0.188ms (0.5x) 🟠    | 0.143ms (0.7x)        | 0.110ms (0.9x)       | 0.120ms (0.8x)       | 0.111ms (0.9x)        | 0.111ms (0.9x)       | *0.100ms (1.0x)* 🟢    |
| `Enqueue(10000)`         | 0.033ms (1.1x)       | 0.019ms (1.9x)        | 0.018ms (2.0x)       | 0.019ms (1.9x)       | 0.017ms (2.0x) 🟢     | 0.018ms (2.0x)       | *0.035ms (1.0x)* 🟠    |
| `Enqueue(100000)`        | 0.331ms (1.1x)       | 0.183ms (1.9x)        | 0.173ms (2.0x)       | 0.182ms (1.9x)       | 0.172ms (2.0x) 🟢     | 0.173ms (2.0x)       | *0.349ms (1.0x)* 🟠    |
| `Enqueue(1000000)`       | 3.311ms (1.1x)       | 1.815ms (1.9x)        | 1.725ms (2.0x)       | 1.823ms (1.9x)       | 1.722ms (2.0x) 🟢     | 1.732ms (2.0x)       | *3.477ms (1.0x)* 🟠    |
| `Dequeue(10000)`         | 0.032ms (1.1x)       | 0.017ms (2.1x)        | 0.008ms (4.6x) 🟢    | 0.017ms (2.1x)       | 0.017ms (2.1x)        | 0.011ms (3.3x)       | *0.035ms (1.0x)* 🟠    |
| `Dequeue(100000)`        | 0.326ms (1.1x)       | 0.163ms (2.2x)        | 0.072ms (4.9x) 🟢    | 0.167ms (2.1x)       | 0.162ms (2.2x)        | 0.102ms (3.5x)       | *0.352ms (1.0x)* 🟠    |
| `Dequeue(1000000)`       | 3.257ms (1.1x)       | 1.624ms (2.2x)        | 0.708ms (5.0x) 🟢    | 1.666ms (2.1x)       | 1.612ms (2.2x)        | 1.008ms (3.5x)       | *3.516ms (1.0x)* 🟠    |

*¹* Optimizations were disabled to perform this benchmark.

***

## Additional resources

* [Memory in Unity](/engine/7000.0/manual/analysis/performance-memory.md)
* [Introduction to unmanaged collections](/engine/7000.0/manual/analysis/performance-memory/collections/overview.md)
