{!See https://docs.google.com/document/d/1takg_GmIBBKKTj-GHZCwzxohpQz7Bhekivkk72kYMtE/edit for reference implementation of OneTrust, dataLayer and GTM} {!OneTrust Cookies Consent} {!OneTrust Cookies Consent end} {!dataLayer initialization push} {!dataLayer initialization push end} {!Google Tag Manager} {!Google Tag Manager end} Performance Comparison: Containers | Collections | 2.3.0-pre.3
docs.unity3d.com
Search Results for

    Show / Hide Table of Contents

    Performance Comparison: Containers

    This file is auto-generated

    All measurments were taken on 12th Gen Intel(R) Core(TM) i9-12900K with 24 logical cores.
    Unity Editor version: 2022.2.8f1
    To regenerate this file locally use: DOTS -> Unity.Collections -> Generate *** menu.

    Table of Contents

    • Benchmark Results
      • HashMap
      • HashSet
      • List
      • ParallelHashMap
      • ParallelHashSet
      • QueueParallelWriter
      • Queue
      • RingQueue

    Benchmark Results

    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.

    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


    HashMap

    Functionality NativeHashMap (S) NativeHashMap (S+B) NativeHashMap (B) UnsafeHashMap (S) UnsafeHashMap (S+B) UnsafeHashMap (B) Dictionary (BCL)
    IsEmpty_x_100k(0)¹ 0.297ms (0.3x) 🟠 0.055ms (1.8x)       0.040ms (2.5x)       0.107ms (0.9x)       0.037ms (2.7x) 🟢 0.040ms (2.5x)       0.100ms (1.0x)      
    IsEmpty_x_100k(100)¹ 0.287ms (0.3x) 🟠 0.056ms (1.8x)       0.040ms (2.5x)       0.107ms (0.9x)       0.036ms (2.8x) 🟢 0.036ms (2.8x) 🟢 0.100ms (1.0x)      
    Count_x_100k(0)¹ 0.221ms (0.5x) 🟠 0.040ms (2.5x)       0.025ms (4.0x)       0.082ms (1.2x)       0.025ms (4.0x) 🟢 0.025ms (4.0x)       0.100ms (1.0x)      
    Count_x_100k(100)¹ 0.221ms (0.5x) 🟠 0.040ms (2.5x)       0.025ms (4.0x)       0.080ms (1.2x)       0.025ms (4.0x) 🟢 0.025ms (4.0x) 🟢 0.100ms (1.0x)      
    ToNativeArrayKeys(10000) 0.048ms (0.2x) 🟠 0.009ms (1.3x)       0.006ms (1.8x) 🟢 0.046ms (0.2x)       0.009ms (1.3x)       0.006ms (1.8x)       0.011ms (1.0x)      
    ToNativeArrayKeys(100000) 0.498ms (0.2x) 🟠 0.114ms (1.0x)       0.066ms (1.8x)       0.402ms (0.3x)       0.087ms (1.4x)       0.065ms (1.8x) 🟢 0.118ms (1.0x)      
    ToNativeArrayKeys(1000000) 4.885ms (0.3x) 🟠 0.871ms (1.4x)       0.638ms (1.9x)       4.791ms (0.3x)       0.858ms (1.4x)       0.611ms (2.0x) 🟢 1.239ms (1.0x)      
    ToNativeArrayValues(10000) 0.041ms (0.3x)       0.009ms (1.2x)       0.006ms (1.8x) 🟢 0.048ms (0.2x) 🟠 0.009ms (1.2x)       0.006ms (1.7x)       0.011ms (1.0x)      
    ToNativeArrayValues(100000) 0.489ms (0.2x) 🟠 0.115ms (1.0x)       0.064ms (1.7x)       0.384ms (0.3x)       0.087ms (1.3x)       0.062ms (1.7x) 🟢 0.109ms (1.0x)      
    ToNativeArrayValues(1000000) 4.834ms (0.3x)       0.858ms (1.7x)       0.635ms (2.3x)       4.845ms (0.3x) 🟠 0.855ms (1.7x)       0.603ms (2.4x) 🟢 1.446ms (1.0x)      
    Insert(10000) 0.203ms (0.3x) 🟠 0.083ms (0.7x)       0.028ms (2.0x)       0.073ms (0.8x)       0.025ms (2.2x)       0.024ms (2.3x) 🟢 0.055ms (1.0x)      
    Insert(100000) 2.057ms (0.3x) 🟠 0.844ms (0.6x)       0.545ms (1.0x)       0.934ms (0.6x)       0.540ms (1.0x)       0.530ms (1.0x) 🟢 0.537ms (1.0x)      
    Insert(1000000) 22.131ms (0.3x) 🟠 9.500ms (0.6x)       4.329ms (1.3x)       9.158ms (0.6x)       4.014ms (1.4x) 🟢 4.202ms (1.4x)       5.740ms (1.0x)      
    AddGrow(4, 1048576)³ 78.798ms (0.2x) 🟠 34.548ms (0.5x)       27.757ms (0.6x)       64.686ms (0.3x)       29.100ms (0.6x)       28.052ms (0.6x)       17.026ms (1.0x) 🟢
    AddGrow(65536, 1048576)³ 77.639ms (0.2x) 🟠 33.682ms (0.4x)       27.523ms (0.5x)       63.560ms (0.2x)       28.941ms (0.5x)       28.508ms (0.5x)       14.062ms (1.0x) 🟢
    Contains(10000) 0.047ms (1.1x)       0.010ms (5.0x)       0.006ms (8.1x)       0.043ms (1.2x)       0.007ms (7.6x)       0.005ms (9.3x) 🟢 0.050ms (1.0x) 🟠
    Contains(100000) 0.466ms (1.2x)       0.126ms (4.3x)       0.075ms (7.2x)       0.471ms (1.2x)       0.083ms (6.6x)       0.069ms (7.9x) 🟢 0.542ms (1.0x) 🟠
    Contains(1000000) 7.718ms (1.2x)       3.085ms (2.9x)       2.199ms (4.1x)       8.264ms (1.1x)       1.997ms (4.5x)       1.910ms (4.7x) 🟢 9.073ms (1.0x) 🟠
    IndexedRead(10000) 0.054ms (1.0x) 🟠 0.007ms (7.7x)       0.007ms (7.0x)       0.052ms (1.0x)       0.007ms (7.2x)       0.006ms (8.9x) 🟢 0.052ms (1.0x)      
    IndexedRead(100000) 0.566ms (1.0x)       0.086ms (6.6x)       0.094ms (6.0x)       0.568ms (1.0x)       0.076ms (7.5x) 🟢 0.078ms (7.3x)       0.569ms (1.0x) 🟠
    IndexedRead(1000000) 9.409ms (1.0x)       2.550ms (3.7x)       2.818ms (3.4x)       10.856ms (0.9x) 🟠 2.364ms (4.0x) 🟢 2.518ms (3.8x)       9.459ms (1.0x)      
    IndexedWrite(10000) 0.326ms (0.3x) 🟠 0.144ms (0.7x)       0.045ms (2.4x)       0.109ms (1.0x)       0.049ms (2.2x)       0.044ms (2.4x) 🟢 0.108ms (1.0x)      
    IndexedWrite(100000) 3.506ms (0.4x) 🟠 1.509ms (0.9x)       0.589ms (2.3x) 🟢 1.150ms (1.2x)       0.613ms (2.2x)       0.597ms (2.3x)       1.371ms (1.0x)      
    IndexedWrite(1000000) 44.817ms (0.4x) 🟠 20.603ms (0.9x)       9.784ms (1.8x)       19.412ms (0.9x)       9.515ms (1.9x) 🟢 11.705ms (1.5x)       17.967ms (1.0x)      
    TryGetValue(10000) 0.052ms (1.1x)       0.008ms (7.3x)       0.007ms (7.7x)       0.051ms (1.1x)       0.006ms (8.8x)       0.006ms (9.3x) 🟢 0.056ms (1.0x) 🟠
    TryGetValue(100000) 0.567ms (1.1x)       0.094ms (6.4x)       0.098ms (6.1x)       0.589ms (1.0x)       0.076ms (7.9x) 🟢 0.078ms (7.7x)       0.600ms (1.0x) 🟠
    TryGetValue(1000000) 8.939ms (1.0x)       2.781ms (3.3x)       2.799ms (3.2x)       9.534ms (1.0x) 🟠 2.340ms (3.9x) 🟢 2.380ms (3.8x)       9.078ms (1.0x)      
    Remove(10000) 0.202ms (0.5x) 🟠 0.088ms (1.1x)       0.030ms (3.4x)       0.074ms (1.4x)       0.028ms (3.6x)       0.026ms (3.9x) 🟢 0.101ms (1.0x)      
    Remove(100000) 2.078ms (0.5x) 🟠 0.987ms (1.1x)       0.397ms (2.7x)       0.799ms (1.4x)       0.392ms (2.8x)       0.355ms (3.0x) 🟢 1.079ms (1.0x)      
    Remove(1000000) 25.615ms (0.5x) 🟠 12.299ms (1.1x)       6.052ms (2.2x)       10.995ms (1.2x)       5.607ms (2.4x)       5.209ms (2.6x) 🟢 13.406ms (1.0x)      
    Foreach(10000) 0.103ms (0.3x) 🟠 0.012ms (2.3x)       0.011ms (2.4x) 🟢 0.093ms (0.3x)       0.012ms (2.3x)       0.011ms (2.4x)       0.027ms (1.0x)      
    Foreach(100000) 1.045ms (0.3x) 🟠 0.113ms (2.3x)       0.098ms (2.7x) 🟢 0.913ms (0.3x)       0.120ms (2.2x)       0.118ms (2.2x)       0.262ms (1.0x)      
    Foreach(1000000) 10.487ms (0.3x) 🟠 0.951ms (2.8x) 🟢 0.975ms (2.8x)       9.253ms (0.3x)       1.124ms (2.4x)       1.008ms (2.7x)       2.698ms (1.0x)      

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



    HashSet

    Functionality NativeHashSet (S) NativeHashSet (S+B) NativeHashSet (B) UnsafeHashSet (S) UnsafeHashSet (S+B) UnsafeHashSet (B) HashSet (BCL)
    IsEmpty_x_100k(0)¹ 0.298ms (0.4x) 🟠 0.055ms (2.2x)       0.040ms  (3.1x)       0.157ms (0.8x)       0.037ms  (3.3x)       0.037ms  (3.4x) 🟢 0.123ms (1.0x)      
    IsEmpty_x_100k(100)¹ 0.297ms (0.4x) 🟠 0.054ms (2.3x)       0.040ms  (3.1x)       0.157ms (0.8x)       0.036ms  (3.4x) 🟢 0.036ms  (3.4x) 🟢 0.123ms (1.0x)      
    Count_x_100k(0)¹ 0.201ms (0.6x) 🟠 0.040ms (3.0x)       0.025ms  (4.8x)       0.080ms (1.5x)       0.025ms  (4.9x) 🟢 0.025ms  (4.8x)       0.120ms (1.0x)      
    Count_x_100k(100)¹ 0.201ms (0.6x) 🟠 0.041ms (3.0x)       0.025ms  (4.9x) 🟢 0.080ms (1.5x)       0.041ms  (3.0x)       0.025ms  (4.9x) 🟢 0.120ms (1.0x)      
    ToNativeArray(10000) 0.041ms (0.3x)       0.008ms (1.6x)       0.006ms  (2.2x) 🟢 0.041ms (0.3x) 🟠 0.009ms  (1.6x)       0.007ms  (2.0x)       0.014ms (1.0x)      
    ToNativeArray(100000) 0.476ms (0.3x)       0.107ms (1.4x)       0.082ms  (1.9x)       0.480ms (0.3x) 🟠 0.092ms  (1.7x)       0.064ms  (2.4x) 🟢 0.153ms (1.0x)      
    ToNativeArray(1000000) 4.984ms (0.3x) 🟠 1.080ms (1.5x)       0.806ms  (2.0x)       4.766ms (0.3x)       0.952ms  (1.7x)       0.640ms  (2.5x) 🟢 1.628ms (1.0x)      
    Insert(10000) 0.185ms (0.3x) 🟠 0.085ms (0.7x)       0.024ms  (2.6x)       0.053ms (1.2x)       0.022ms  (2.8x) 🟢 0.022ms  (2.8x) 🟢 0.062ms (1.0x)      
    Insert(100000) 1.847ms (0.3x) 🟠 0.802ms (0.8x)       0.487ms  (1.3x)       0.753ms (0.8x)       0.484ms  (1.3x)       0.481ms  (1.3x) 🟢 0.620ms (1.0x)      
    Insert(1000000) 19.765ms (0.3x) 🟠 8.994ms (0.7x)       5.941ms  (1.1x)       8.529ms (0.7x)       5.811ms  (1.1x) 🟢 5.826ms  (1.1x)       6.356ms (1.0x)      
    AddGrow(4, 1048576)³ 73.511ms (0.2x) 🟠 35.806ms (0.4x)       30.565ms  (0.4x)       63.216ms (0.2x)       31.391ms  (0.4x)       30.517ms  (0.4x)       13.376ms (1.0x) 🟢
    AddGrow(65536, 1048576)³ 72.100ms (0.2x) 🟠 33.317ms (0.4x)       31.521ms  (0.4x)       61.717ms (0.2x)       31.977ms  (0.4x)       30.623ms  (0.4x)       12.670ms (1.0x) 🟢
    Contains(10000) 0.046ms (1.5x)       0.011ms (6.6x)       0.006ms (11.0x)       0.043ms (1.6x)       0.007ms (10.4x)       0.005ms (12.9x) 🟢 0.070ms (1.0x) 🟠
    Contains(100000) 0.469ms (1.5x)       0.127ms (5.6x)       0.075ms  (9.6x)       0.457ms (1.6x)       0.092ms  (7.8x)       0.064ms (11.3x) 🟢 0.718ms (1.0x) 🟠
    Contains(1000000) 7.919ms (1.4x)       3.340ms (3.2x)       1.774ms  (6.0x)       9.239ms (1.2x)       1.951ms  (5.5x)       1.552ms  (6.9x) 🟢 10.730ms (1.0x) 🟠
    Remove(10000) 0.206ms (0.6x) 🟠 0.089ms (1.3x)       0.031ms  (3.8x)       0.071ms (1.7x)       0.026ms  (4.5x)       0.025ms  (4.6x) 🟢 0.118ms (1.0x)      
    Remove(100000) 2.120ms (0.6x) 🟠 1.025ms (1.2x)       0.419ms  (3.0x)       0.791ms (1.6x)       0.382ms  (3.3x)       0.334ms  (3.8x) 🟢 1.255ms (1.0x)      
    Remove(1000000) 25.637ms (0.6x) 🟠 12.055ms (1.4x)       6.241ms  (2.6x)       10.484ms (1.6x)       5.776ms  (2.8x)       5.073ms  (3.2x) 🟢 16.309ms (1.0x)      
    Foreach(10000) 0.065ms (0.3x) 🟠 0.018ms (1.0x)       0.011ms  (1.6x)       0.034ms (0.6x)       0.011ms  (1.7x) 🟢 0.011ms  (1.7x) 🟢 0.019ms (1.0x)      
    Foreach(100000) 0.607ms (0.3x) 🟠 0.131ms (1.4x)       0.101ms  (1.9x)       0.304ms (0.6x)       0.095ms  (2.0x)       0.094ms  (2.0x) 🟢 0.189ms (1.0x)      
    Foreach(1000000) 6.170ms (0.3x) 🟠 1.375ms (1.4x)       1.026ms  (1.9x)       2.982ms (0.7x)       0.911ms  (2.1x) 🟢 0.931ms  (2.1x)       1.945ms (1.0x)      
    UnionWith(10000) 0.285ms (0.7x) 🟠 0.150ms (1.4x)       0.085ms  (2.5x)       0.159ms (1.3x)       0.078ms  (2.7x)       0.073ms  (2.9x) 🟢 0.211ms (1.0x)      
    UnionWith(100000) 2.986ms (0.8x) 🟠 1.535ms (1.6x)       1.067ms  (2.3x)       1.817ms (1.4x)       1.097ms  (2.3x)       1.050ms  (2.4x) 🟢 2.486ms (1.0x)      
    UnionWith(1000000) 72.891ms (0.6x) 🟠 41.035ms (1.0x)       32.962ms  (1.3x)       62.666ms (0.7x)       34.089ms  (1.3x)       32.794ms  (1.3x) 🟢 43.015ms (1.0x)      
    IntersectWith(10000) 0.236ms (0.8x) 🟠 0.127ms (1.5x)       0.101ms  (1.9x)       0.170ms (1.1x)       0.085ms  (2.2x) 🟢 0.090ms  (2.1x)       0.191ms (1.0x)      
    IntersectWith(100000) 2.543ms (0.9x) 🟠 1.353ms (1.7x)       1.127ms  (2.1x)       1.850ms (1.3x)       1.099ms  (2.1x)       1.055ms  (2.2x) 🟢 2.331ms (1.0x)      
    IntersectWith(1000000) 31.388ms (1.2x)       18.153ms (2.0x)       15.034ms  (2.4x)       23.326ms (1.6x)       13.757ms  (2.7x) 🟢 14.167ms  (2.6x)       36.515ms (1.0x) 🟠
    ExceptWith(10000) 0.280ms (0.6x) 🟠 0.141ms (1.1x)       0.073ms  (2.2x) 🟢 0.154ms (1.0x)       0.076ms  (2.1x)       0.073ms  (2.2x)       0.161ms (1.0x)      
    ExceptWith(100000) 2.919ms (0.7x) 🟠 1.436ms (1.4x)       0.992ms  (2.0x) 🟢 1.634ms (1.2x)       1.021ms  (1.9x)       1.039ms  (1.9x)       1.956ms (1.0x)      
    ExceptWith(1000000) 40.438ms (0.7x) 🟠 20.188ms (1.3x)       13.687ms  (1.9x) 🟢 22.843ms (1.2x)       13.829ms  (1.9x)       13.732ms  (1.9x)       26.471ms (1.0x)      

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



    List

    Functionality NativeList (S) NativeList (S+B) NativeList (B) UnsafeList (S) UnsafeList (S+B) UnsafeList (B) List (BCL)
    IsEmpty_x_100k(0)¹ 0.120ms (0.8x)       0.040ms  (2.5x)       0.041ms  (2.5x)       0.123ms (0.8x) 🟠 0.036ms  (2.8x) 🟢 0.036ms  (2.8x)       0.100ms (1.0x)      
    IsEmpty_x_100k(100)¹ 0.120ms (0.9x)       0.040ms  (2.5x)       0.041ms  (2.5x)       0.143ms (0.7x) 🟠 0.040ms  (2.5x) 🟢 0.041ms  (2.5x)       0.102ms (1.0x)      
    Count_x_100k(0)¹ 0.100ms (0.8x) 🟠 0.050ms  (1.6x)       0.048ms  (1.7x)       0.020ms (4.0x) 🟢 0.025ms  (3.3x)       0.025ms  (3.2x)       0.080ms (1.0x)      
    Count_x_100k(100)¹ 0.100ms (0.8x) 🟠 0.050ms  (1.6x)       0.047ms  (1.7x)       0.020ms (4.1x) 🟢 0.040ms  (2.0x)       0.025ms  (3.2x)       0.082ms (1.0x)      
    ToNativeArray(10000) 0.002ms (1.5x)       0.001ms  (2.8x)       0.001ms  (3.0x) 🟢 --- --- --- 0.003ms (1.0x) 🟠
    ToNativeArray(100000) 0.096ms (0.3x) 🟠 0.009ms  (3.8x) 🟢 0.013ms  (2.5x)       --- --- --- 0.033ms (1.0x)      
    ToNativeArray(1000000) 0.988ms (0.4x) 🟠 0.237ms  (1.7x)       0.237ms  (1.7x) 🟢 --- --- --- 0.414ms (1.0x)      
    Add(10000) 0.148ms (0.1x) 🟠 0.062ms  (0.2x)       0.016ms  (1.0x)       0.016ms (0.9x)       0.006ms  (2.7x)       0.005ms  (3.1x) 🟢 0.015ms (1.0x)      
    Add(100000) 1.461ms (0.1x) 🟠 0.649ms  (0.2x)       0.154ms  (1.0x)       0.160ms (0.9x)       0.046ms  (3.2x) 🟢 0.047ms  (3.1x)       0.147ms (1.0x)      
    Add(1000000) 15.202ms (0.1x) 🟠 6.431ms  (0.2x)       1.523ms  (1.0x)       1.660ms (0.9x)       0.482ms  (3.2x) 🟢 0.495ms  (3.1x)       1.527ms (1.0x)      
    AddGrow(4, 1048576)³ 17.105ms (0.2x) 🟠 7.606ms  (0.4x)       2.780ms  (1.1x)       2.960ms (1.1x)       1.784ms  (1.8x)       1.729ms  (1.8x) 🟢 3.193ms (1.0x)      
    AddGrow(65536, 1048576)³ 17.040ms (0.2x) 🟠 7.671ms  (0.4x)       2.858ms  (1.1x)       3.016ms (1.1x)       1.786ms  (1.8x) 🟢 1.873ms  (1.8x)       3.281ms (1.0x)      
    Contains(1000) 0.182ms (1.3x)       0.080ms  (3.1x)       0.080ms  (3.1x) 🟢 0.177ms (1.4x)       0.080ms  (3.1x)       0.080ms  (3.1x)       0.245ms (1.0x) 🟠
    Contains(10000) 18.061ms (1.4x)       8.010ms  (3.0x)       7.760ms  (3.1x)       18.005ms (1.4x)       7.636ms  (3.2x) 🟢 7.701ms  (3.2x)       24.400ms (1.0x) 🟠
    IndexedRead(10000) 0.030ms (0.5x) 🟠 0.005ms  (3.2x)       0.003ms  (5.5x)       0.012ms (1.2x)       0.003ms  (4.6x)       0.003ms  (5.9x) 🟢 0.015ms (1.0x)      
    IndexedRead(100000) 0.356ms (0.4x) 🟠 0.047ms  (3.2x)       0.031ms  (4.9x) 🟢 0.133ms (1.1x)       0.042ms  (3.6x)       0.031ms  (4.9x) 🟢 0.150ms (1.0x)      
    IndexedRead(1000000) 5.468ms (0.5x) 🟠 1.187ms  (2.2x)       0.966ms  (2.7x)       2.061ms (1.2x)       1.084ms  (2.4x)       0.926ms  (2.8x) 🟢 2.560ms (1.0x)      
    IndexedWrite(10000) 0.023ms (0.7x) 🟠 0.008ms  (2.2x)       0.006ms  (2.9x)       0.010ms (1.7x)       0.005ms  (3.7x) 🟢 0.005ms  (3.6x)       0.017ms (1.0x)      
    IndexedWrite(100000) 0.491ms (0.4x) 🟠 0.092ms  (2.0x)       0.085ms  (2.2x)       0.165ms (1.1x)       0.084ms  (2.2x) 🟢 0.087ms  (2.1x)       0.184ms (1.0x)      
    IndexedWrite(1000000) 9.340ms (0.3x) 🟠 1.703ms  (1.8x)       1.671ms  (1.8x)       4.359ms (0.7x)       1.621ms  (1.9x)       1.597ms  (1.9x) 🟢 3.045ms (1.0x)      
    Remove(1000) 0.083ms (0.2x) 🟠 0.014ms  (1.0x)       0.008ms  (1.7x)       0.074ms (0.2x)       0.008ms  (1.7x) 🟢 0.008ms  (1.7x) 🟢 0.014ms (1.0x)      
    Remove(10000) 6.913ms (1.8x)       0.727ms (17.1x)       0.671ms (18.5x)       6.526ms (1.9x)       0.667ms (18.6x) 🟢 0.673ms (18.5x)       12.441ms (1.0x) 🟠
    Foreach(10000) 0.015ms (1.3x)       0.002ms  (8.0x)       0.002ms  (8.3x) 🟢 0.015ms (1.3x)       0.002ms  (8.3x) 🟢 0.002ms  (8.3x) 🟢 0.019ms (1.0x) 🟠
    Foreach(100000) 0.150ms (1.3x)       0.021ms  (9.2x)       0.021ms  (9.2x)       0.150ms (1.3x)       0.020ms  (9.4x) 🟢 0.021ms  (9.3x)       0.191ms (1.0x) 🟠
    Foreach(1000000) 1.562ms (1.2x)       0.244ms  (7.9x)       0.228ms  (8.5x)       1.530ms (1.3x)       0.202ms  (9.6x) 🟢 0.206ms  (9.4x)       1.936ms (1.0x) 🟠

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



    ParallelHashMap

    Functionality NativeParallelHashMap (S) NativeParallelHashMap (S+B) NativeParallelHashMap (B) UnsafeParallelHashMap (S) UnsafeParallelHashMap (S+B) UnsafeParallelHashMap (B) ConcurrentDictionary (BCL)
    IsEmpty_x_100k(1, 0)¹ 0.432ms (226.7x)       0.055ms  (1781.8x)       0.041ms  (2372.9x)       0.246ms  (399.2x)       0.037ms  (2620.3x) 🟢 0.040ms  (2425.7x)       97.999ms (1.0x) 🟠
    IsEmpty_x_100k(2, 0)¹˒² 0.241ms (723.2x)       0.032ms  (5506.3x)       0.022ms  (8018.4x) 🟢 0.115ms (1514.4x)       0.041ms  (4223.3x)       0.041ms  (4202.9x)       173.999ms (1.0x) 🟠
    IsEmpty_x_100k(4, 0)¹˒² 0.218ms (781.4x)       0.016ms (10647.0x)       0.012ms (13849.7x)       0.099ms (1722.5x)       0.022ms  (7743.3x)       0.011ms (15347.0x) 🟢 170.352ms (1.0x) 🟠
    IsEmpty_x_100k(1, 100)¹ 0.590ms (159.2x)       0.092ms  (1015.8x)       0.072ms  (1303.7x)       0.307ms  (305.9x)       0.069ms  (1370.3x) 🟢 0.069ms  (1370.3x) 🟢 93.863ms (1.0x) 🟠
    IsEmpty_x_100k(2, 100)¹˒² 0.314ms (570.5x)       0.048ms  (3705.1x)       0.038ms  (4672.5x) 🟢 0.197ms  (908.4x)       0.038ms  (4660.3x)       0.039ms  (4648.2x)       178.957ms (1.0x) 🟠
    IsEmpty_x_100k(4, 100)¹˒² 0.215ms (991.8x)       0.048ms  (4444.4x)       0.034ms  (6237.7x) 🟢 0.129ms (1652.4x)       0.035ms  (6165.6x)       0.036ms  (5876.9x)       213.330ms (1.0x) 🟠
    Count_x_100k(1, 0)¹ 0.511ms (193.2x)       0.094ms  (1052.2x)       0.062ms  (1598.8x)       0.225ms  (439.1x)       0.062ms  (1601.4x) 🟢 0.062ms  (1601.4x) 🟢 98.806ms (1.0x) 🟠
    Count_x_100k(2, 0)¹˒² 0.251ms (741.7x)       0.050ms  (3698.2x)       0.037ms  (4997.0x)       0.115ms (1619.4x)       0.035ms  (5386.9x) 🟢 0.035ms  (5386.9x) 🟢 186.388ms (1.0x) 🟠
    Count_x_100k(4, 0)¹˒² 0.218ms (833.8x)       0.051ms  (3591.7x)       0.040ms  (4552.5x)       0.091ms (2007.7x)       0.018ms (10405.6x) 🟢 0.041ms  (4398.5x)       182.098ms (1.0x) 🟠
    Count_x_100k(1, 100)¹ 6.592ms  (14.8x)       5.949ms    (16.4x)       5.913ms    (16.5x)       6.219ms   (15.7x)       5.868ms    (16.6x)       5.813ms    (16.8x) 🟢 97.489ms (1.0x) 🟠
    Count_x_100k(2, 100)¹˒² 3.295ms  (57.2x)       2.955ms    (63.7x)       2.947ms    (63.9x)       3.148ms   (59.8x)       2.921ms    (64.5x) 🟢 2.941ms    (64.0x)       188.346ms (1.0x) 🟠
    Count_x_100k(4, 100)¹˒² 1.687ms (115.5x)       1.525ms   (127.8x)       1.466ms   (132.9x)       1.630ms  (119.5x)       1.466ms   (132.9x) 🟢 1.467ms   (132.8x)       194.821ms (1.0x) 🟠
    ToNativeArrayKeys(1, 10000) 0.046ms   (0.8x) 🟠 0.017ms     (2.3x)       0.006ms     (6.3x)       0.044ms    (0.9x)       0.009ms     (4.4x)       0.006ms     (6.4x) 🟢 0.039ms (1.0x)      
    ToNativeArrayKeys(1, 100000) 0.494ms   (0.8x)       0.096ms     (4.2x)       0.060ms     (6.8x)       0.506ms    (0.8x) 🟠 0.096ms     (4.2x)       0.057ms     (7.1x) 🟢 0.405ms (1.0x)      
    ToNativeArrayKeys(1, 1000000) 5.303ms   (1.0x)       0.882ms     (6.1x)       0.687ms     (7.8x) 🟢 5.043ms    (1.1x)       0.928ms     (5.8x)       0.773ms     (7.0x)       5.382ms (1.0x) 🟠
    ToNativeArrayValues(1, 10000) 0.043ms   (0.8x) 🟠 0.009ms     (3.8x)       0.006ms     (5.9x) 🟢 0.041ms    (0.8x)       0.009ms     (3.9x)       0.006ms     (5.4x)       0.034ms (1.0x)      
    ToNativeArrayValues(1, 100000) 0.484ms   (0.8x) 🟠 0.084ms     (4.5x)       0.063ms     (6.0x)       0.483ms    (0.8x)       0.082ms     (4.6x)       0.052ms     (7.2x) 🟢 0.376ms (1.0x)      
    ToNativeArrayValues(1, 1000000) 5.037ms   (1.1x)       0.881ms     (6.4x)       0.615ms     (9.1x) 🟢 5.322ms    (1.1x)       0.847ms     (6.6x)       0.655ms     (8.6x)       5.617ms (1.0x) 🟠
    Insert(1, 10000) 0.315ms   (3.8x)       0.230ms     (5.2x)       0.161ms     (7.5x)       0.226ms    (5.3x)       0.161ms     (7.4x)       0.158ms     (7.6x) 🟢 1.201ms (1.0x) 🟠
    Insert(2, 10000)² 0.328ms   (4.7x)       0.350ms     (4.4x)       0.134ms    (11.6x) 🟢 0.167ms    (9.3x)       0.138ms    (11.2x)       0.139ms    (11.2x)       1.555ms (1.0x) 🟠
    Insert(4, 10000)² 0.328ms   (6.4x)       0.367ms     (5.7x)       0.137ms    (15.3x)       0.136ms   (15.5x)       0.135ms    (15.5x) 🟢 0.149ms    (14.1x)       2.102ms (1.0x) 🟠
    Insert(1, 100000) 3.238ms   (3.9x)       2.309ms     (5.4x)       1.613ms     (7.8x) 🟢 2.253ms    (5.6x)       1.614ms     (7.8x)       1.622ms     (7.7x)       12.506ms (1.0x) 🟠
    Insert(2, 100000)² 3.410ms  (18.4x)       3.525ms    (17.8x)       1.359ms    (46.3x)       1.471ms   (42.8x)       1.456ms    (43.2x)       1.355ms    (46.4x) 🟢 62.908ms (1.0x) 🟠
    Insert(4, 100000)² 3.032ms   (7.8x)       2.837ms     (8.3x)       1.117ms    (21.2x)       1.014ms   (23.3x) 🟢 1.198ms    (19.7x)       1.125ms    (21.0x)       23.665ms (1.0x) 🟠
    Insert(1, 1000000) 33.813ms   (5.7x)       24.436ms     (7.9x)       17.537ms    (11.0x)       23.694ms    (8.2x)       17.589ms    (11.0x)       17.433ms    (11.1x) 🟢 193.464ms (1.0x) 🟠
    Insert(2, 1000000)² 35.429ms   (5.1x)       33.098ms     (5.4x)       15.408ms    (11.7x)       16.052ms   (11.2x)       14.894ms    (12.1x)       14.741ms    (12.2x) 🟢 179.727ms (1.0x) 🟠
    Insert(4, 1000000)² 32.210ms   (7.0x)       28.346ms     (8.0x)       13.034ms    (17.4x)       11.956ms   (18.9x) 🟢 13.236ms    (17.1x)       12.634ms    (17.9x)       226.153ms (1.0x) 🟠
    AddGrow(1, 4, 1048576)³ 43.625ms   (5.4x)       18.364ms    (12.8x)       12.671ms    (18.5x)       32.314ms    (7.3x)       13.079ms    (18.0x)       12.364ms    (19.0x) 🟢 234.859ms (1.0x) 🟠
    AddGrow(1, 65536, 1048576)³ 40.864ms   (3.0x)       17.987ms     (6.8x)       11.833ms    (10.4x) 🟢 30.744ms    (4.0x)       12.772ms     (9.6x)       12.791ms     (9.6x)       122.720ms (1.0x) 🟠
    Contains(1, 10000) 0.083ms   (1.0x) 🟠 0.010ms     (8.1x)       0.006ms    (13.6x) 🟢 0.050ms    (1.6x)       0.010ms     (8.1x)       0.006ms    (13.1x)       0.080ms (1.0x)      
    Contains(2, 10000)² 0.049ms   (1.3x)       0.012ms     (5.2x)       0.010ms     (6.2x)       0.034ms    (1.8x)       0.012ms     (5.1x)       0.010ms     (6.6x) 🟢 0.063ms (1.0x) 🟠
    Contains(4, 10000)² 0.136ms   (1.2x)       0.012ms    (13.5x)       0.010ms    (16.1x) 🟢 0.025ms    (6.5x)       0.011ms    (14.8x)       0.120ms     (1.4x)       0.163ms (1.0x) 🟠
    Contains(1, 100000) 0.874ms   (1.1x)       0.114ms     (8.1x)       0.079ms    (11.6x)       0.613ms    (1.5x)       0.116ms     (7.9x)       0.079ms    (11.7x) 🟢 0.918ms (1.0x) 🟠
    Contains(2, 100000)² 0.529ms   (1.1x)       0.097ms     (6.0x)       0.068ms     (8.6x) 🟢 0.385ms    (1.5x)       0.092ms     (6.4x)       0.093ms     (6.3x)       0.583ms (1.0x) 🟠
    Contains(4, 100000)² 0.306ms   (1.2x)       0.152ms     (2.4x)       0.060ms     (6.1x) 🟢 0.342ms    (1.1x)       0.072ms     (5.1x)       0.172ms     (2.1x)       0.369ms (1.0x) 🟠
    Contains(1, 1000000) 15.378ms   (1.3x)       3.007ms     (6.5x)       2.176ms     (8.9x) 🟢 10.919ms    (1.8x)       2.531ms     (7.7x)       2.290ms     (8.5x)       19.437ms (1.0x) 🟠
    Contains(2, 1000000)² 8.319ms   (1.4x)       1.868ms     (6.1x)       1.286ms     (8.9x) 🟢 6.566ms    (1.7x)       1.709ms     (6.7x)       1.343ms     (8.5x)       11.462ms (1.0x) 🟠
    Contains(4, 1000000)² 4.621ms   (1.3x)       1.124ms     (5.5x)       1.007ms     (6.1x)       3.861ms    (1.6x)       1.074ms     (5.7x)       0.791ms     (7.7x) 🟢 6.128ms (1.0x) 🟠
    IndexedRead(1, 10000) 0.077ms   (1.0x)       0.007ms    (11.0x) 🟢 0.009ms     (9.1x)       0.060ms    (1.3x)       0.008ms     (9.4x)       0.008ms     (9.5x)       0.079ms (1.0x) 🟠
    IndexedRead(2, 10000)² 0.096ms   (1.0x) 🟠 0.018ms     (5.2x)       0.017ms     (5.5x)       0.067ms    (1.4x)       0.013ms     (6.9x) 🟢 0.019ms     (5.0x)       0.092ms (1.0x)      
    IndexedRead(4, 10000)² 0.090ms   (2.6x)       0.015ms    (15.9x) 🟢 0.123ms     (1.9x)       0.169ms    (1.4x)       0.017ms    (13.8x)       0.016ms    (15.3x)       0.237ms (1.0x) 🟠
    IndexedRead(1, 100000) 0.889ms   (1.1x)       0.094ms    (10.2x) 🟢 0.106ms     (9.1x)       0.688ms    (1.4x)       0.102ms     (9.4x)       0.121ms     (7.9x)       0.959ms (1.0x) 🟠
    IndexedRead(2, 100000)² 0.953ms   (1.2x)       0.138ms     (7.9x)       0.123ms     (8.9x) 🟢 0.762ms    (1.4x)       0.133ms     (8.3x)       0.151ms     (7.3x)       1.098ms (1.0x) 🟠
    IndexedRead(4, 100000)² 1.052ms   (1.0x)       0.225ms     (4.8x)       0.131ms     (8.2x) 🟢 0.779ms    (1.4x)       0.313ms     (3.4x)       0.141ms     (7.6x)       1.069ms (1.0x) 🟠
    IndexedRead(1, 1000000) 15.265ms   (1.2x)       2.894ms     (6.3x) 🟢 3.170ms     (5.8x)       12.505ms    (1.5x)       3.040ms     (6.0x)       3.167ms     (5.8x)       18.366ms (1.0x) 🟠
    IndexedRead(2, 1000000)² 15.077ms   (1.1x)       2.994ms     (5.7x)       2.937ms     (5.8x)       13.515ms    (1.3x)       2.668ms     (6.4x) 🟢 2.981ms     (5.7x)       17.083ms (1.0x) 🟠
    IndexedRead(4, 1000000)² 14.686ms   (1.1x)       2.787ms     (6.0x)       2.886ms     (5.8x)       11.597ms    (1.4x)       2.589ms     (6.4x) 🟢 2.936ms     (5.7x)       16.662ms (1.0x) 🟠
    IndexedWrite(1, 10000) 0.283ms   (1.9x)       0.105ms     (5.2x)       0.044ms    (12.5x)       0.151ms    (3.6x)       0.047ms    (11.5x)       0.043ms    (12.5x) 🟢 0.543ms (1.0x) 🟠
    IndexedWrite(1, 100000) 2.989ms   (2.0x)       1.125ms     (5.4x)       0.586ms    (10.3x)       1.619ms    (3.7x)       0.612ms     (9.8x)       0.564ms    (10.7x) 🟢 6.017ms (1.0x) 🟠
    IndexedWrite(1, 1000000) 42.070ms   (2.2x)       16.424ms     (5.7x)       9.621ms     (9.7x)       28.322ms    (3.3x)       9.609ms     (9.7x)       9.348ms     (9.9x) 🟢 92.933ms (1.0x) 🟠
    TryGetValue(1, 10000) 0.077ms   (0.9x) 🟠 0.012ms     (5.8x)       0.008ms     (8.2x) 🟢 0.051ms    (1.3x)       0.013ms     (5.3x)       0.009ms     (7.9x)       0.068ms (1.0x)      
    TryGetValue(2, 10000)² 0.151ms   (0.3x) 🟠 0.012ms     (3.9x)       0.011ms     (4.5x)       0.036ms    (1.3x)       0.012ms     (4.0x)       0.011ms     (4.6x) 🟢 0.049ms (1.0x)      
    TryGetValue(4, 10000)² 0.487ms   (0.3x) 🟠 0.123ms     (1.3x)       0.122ms     (1.3x)       0.130ms    (1.2x)       0.013ms    (12.5x) 🟢 0.122ms     (1.3x)       0.160ms (1.0x)      
    TryGetValue(1, 100000) 0.848ms   (0.9x) 🟠 0.149ms     (5.3x)       0.112ms     (7.0x) 🟢 0.590ms    (1.3x)       0.160ms     (4.9x)       0.125ms     (6.3x)       0.781ms (1.0x)      
    TryGetValue(2, 100000)² 0.553ms   (1.0x) 🟠 0.110ms     (5.0x)       0.087ms     (6.3x) 🟢 0.386ms    (1.4x)       0.114ms     (4.8x)       0.092ms     (5.9x)       0.549ms (1.0x)      
    TryGetValue(4, 100000)² 0.355ms   (1.2x)       0.209ms     (2.1x)       0.192ms     (2.3x)       0.211ms    (2.1x)       0.160ms     (2.7x) 🟢 0.189ms     (2.3x)       0.432ms (1.0x) 🟠
    TryGetValue(1, 1000000) 14.213ms   (1.2x)       3.487ms     (5.0x)       2.716ms     (6.4x) 🟢 10.699ms    (1.6x)       3.711ms     (4.7x)       2.888ms     (6.0x)       17.418ms (1.0x) 🟠
    TryGetValue(2, 1000000)² 7.950ms   (1.3x)       2.387ms     (4.4x)       1.792ms     (5.8x)       6.440ms    (1.6x)       2.167ms     (4.8x)       1.691ms     (6.2x) 🟢 10.419ms (1.0x) 🟠
    TryGetValue(4, 1000000)² 4.282ms   (1.4x)       1.327ms     (4.6x)       1.281ms     (4.8x)       3.100ms    (2.0x)       1.205ms     (5.1x)       1.001ms     (6.1x) 🟢 6.150ms (1.0x) 🟠
    Remove(1, 10000) 0.209ms   (1.4x)       0.093ms     (3.2x)       0.033ms     (8.8x)       0.078ms    (3.8x)       0.029ms    (10.2x) 🟢 0.032ms     (9.3x)       0.295ms (1.0x) 🟠
    Remove(1, 100000) 2.236ms   (1.5x)       1.019ms     (3.2x)       0.409ms     (8.0x) 🟢 0.850ms    (3.9x)       0.414ms     (7.9x)       0.435ms     (7.5x)       3.282ms (1.0x) 🟠
    Remove(1, 1000000) 27.198ms   (1.5x)       12.415ms     (3.2x)       6.210ms     (6.4x)       10.913ms    (3.7x)       6.001ms     (6.7x) 🟢 6.520ms     (6.1x)       40.044ms (1.0x) 🟠
    Foreach(1, 10000) 0.108ms   (2.9x)       0.012ms    (26.3x) 🟢 0.013ms    (24.5x)       0.097ms    (3.2x)       0.013ms    (24.1x)       0.013ms    (24.7x)       0.311ms (1.0x) 🟠
    Foreach(1, 100000) 1.045ms   (2.9x)       0.097ms    (31.3x) 🟢 0.110ms    (27.9x)       0.948ms    (3.2x)       0.111ms    (27.4x)       0.109ms    (27.9x)       3.050ms (1.0x) 🟠
    Foreach(1, 1000000) 10.987ms   (2.9x)       1.289ms    (24.9x)       1.256ms    (25.6x)       9.502ms    (3.4x)       1.191ms    (26.9x)       1.191ms    (26.9x) 🟢 32.081ms (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

    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.448ms  (6.2x)       0.055ms  (50.9x)       0.041ms  (67.5x)       0.225ms (12.4x)       0.037ms  (75.2x)       0.036ms  (77.0x) 🟢 2.789ms (1.0x) 🟠
    IsEmpty_x_100k(2, 0)¹˒² 0.338ms  (8.5x)       0.033ms  (88.0x)       0.021ms (139.5x) 🟢 0.123ms (23.2x)       0.042ms  (68.1x)       0.055ms  (52.1x)       2.861ms (1.0x) 🟠
    IsEmpty_x_100k(4, 0)¹˒² 0.238ms (13.6x)       0.015ms (210.4x)       0.011ms (300.1x) 🟢 0.089ms (36.5x)       0.012ms (279.4x)       0.012ms (267.8x)       3.241ms (1.0x) 🟠
    IsEmpty_x_100k(1, 100)¹ 0.602ms  (4.7x)       0.092ms  (30.3x)       0.069ms  (40.7x)       0.307ms  (9.1x)       0.069ms  (40.9x) 🟢 0.072ms  (38.9x)       2.799ms (1.0x) 🟠
    IsEmpty_x_100k(2, 100)¹˒² 0.315ms  (9.1x)       0.049ms  (59.0x)       0.038ms  (74.7x) 🟢 0.197ms (14.6x)       0.039ms  (74.3x)       0.040ms  (71.3x)       2.868ms (1.0x) 🟠
    IsEmpty_x_100k(4, 100)¹˒² 0.203ms (16.6x)       0.041ms  (82.0x)       0.034ms  (98.2x) 🟢 0.112ms (30.1x)       0.034ms  (98.2x) 🟢 0.035ms  (96.5x)       3.379ms (1.0x) 🟠
    Count_x_100k(1, 0)¹ 0.491ms  (5.6x)       0.092ms  (29.8x)       0.060ms  (45.6x) 🟢 0.302ms  (9.1x)       0.062ms  (44.6x)       0.062ms  (44.6x)       2.753ms (1.0x) 🟠
    Count_x_100k(2, 0)¹˒² 0.248ms (11.6x)       0.050ms  (57.6x)       0.038ms  (75.2x) 🟢 0.166ms (17.4x)       0.045ms  (63.7x)       0.039ms  (74.8x)       2.881ms (1.0x) 🟠
    Count_x_100k(4, 0)¹˒² 0.218ms (42.7x)       0.032ms (287.0x)       0.035ms (267.2x)       0.098ms (94.6x)       0.050ms (186.3x)       0.018ms (528.3x) 🟢 9.298ms (1.0x) 🟠
    Count_x_100k(1, 100)¹ 6.458ms  (0.4x) 🟠 5.779ms   (0.5x)       5.830ms   (0.5x)       6.114ms  (0.5x)       5.823ms   (0.5x)       5.788ms   (0.5x)       2.768ms (1.0x) 🟢
    Count_x_100k(2, 100)¹˒² 3.306ms  (0.9x) 🟠 2.952ms   (1.0x)       2.884ms   (1.0x)       3.123ms  (0.9x)       2.912ms   (1.0x)       2.897ms   (1.0x)       2.866ms (1.0x) 🟢
    Count_x_100k(4, 100)¹˒² 1.700ms  (1.9x)       1.596ms   (2.0x)       1.499ms   (2.1x) 🟢 1.607ms  (2.0x)       1.524ms   (2.1x)       1.589ms   (2.0x)       3.214ms (1.0x) 🟠
    ToNativeArray(1, 10000) 0.044ms  (1.9x)       0.009ms   (9.8x)       0.006ms  (14.3x) 🟢 0.046ms  (1.9x)       0.016ms   (5.3x)       0.007ms  (13.2x)       0.086ms (1.0x) 🟠
    ToNativeArray(1, 100000) 0.489ms  (0.2x)       0.095ms   (1.3x)       0.059ms   (2.1x) 🟢 0.506ms  (0.2x) 🟠 0.085ms   (1.4x)       0.064ms   (1.9x)       0.120ms (1.0x)      
    ToNativeArray(1, 1000000) 5.172ms  (0.3x)       1.147ms   (1.3x)       0.814ms   (1.8x)       5.443ms  (0.3x) 🟠 1.099ms   (1.3x)       0.660ms   (2.2x) 🟢 1.480ms (1.0x)      
    Insert(1, 10000) 0.309ms  (1.2x)       0.232ms   (1.6x)       0.163ms   (2.3x)       0.227ms  (1.6x)       0.162ms   (2.3x) 🟢 0.163ms   (2.3x)       0.370ms (1.0x) 🟠
    Insert(2, 10000)² 0.405ms (36.9x)       0.386ms  (38.8x)       0.254ms  (58.9x)       0.264ms (56.7x)       0.262ms  (57.2x)       0.239ms  (62.5x) 🟢 14.970ms (1.0x) 🟠
    Insert(4, 10000)² 0.374ms (41.0x)       0.332ms  (46.2x)       0.201ms  (76.3x)       0.219ms (70.0x)       0.195ms  (78.5x)       0.184ms  (83.1x) 🟢 15.310ms (1.0x) 🟠
    Insert(1, 100000) 3.195ms  (1.1x)       2.304ms   (1.6x)       1.625ms   (2.2x)       2.302ms  (1.6x)       1.621ms   (2.3x)       1.618ms   (2.3x) 🟢 3.654ms (1.0x) 🟠
    Insert(2, 100000)² 4.213ms  (3.8x)       3.716ms   (4.3x)       2.411ms   (6.6x)       2.769ms  (5.7x)       2.500ms   (6.3x)       2.406ms   (6.6x) 🟢 15.860ms (1.0x) 🟠
    Insert(4, 100000)² 3.094ms (14.9x)       2.972ms  (15.5x)       1.750ms  (26.3x)       1.793ms (25.6x)       1.836ms  (25.0x)       1.740ms  (26.4x) 🟢 45.962ms (1.0x) 🟠
    Insert(1, 1000000) 32.916ms  (1.2x)       23.858ms   (1.7x)       17.121ms   (2.3x)       23.780ms  (1.7x)       17.022ms   (2.3x)       17.019ms   (2.3x) 🟢 39.661ms (1.0x) 🟠
    Insert(2, 1000000)² 43.333ms  (1.1x)       39.590ms   (1.3x)       25.178ms   (2.0x) 🟢 27.607ms  (1.8x)       25.388ms   (2.0x)       25.220ms   (2.0x)       49.668ms (1.0x) 🟠
    Insert(4, 1000000)² 31.618ms  (2.0x)       30.549ms   (2.0x)       18.563ms   (3.4x)       18.961ms  (3.3x)       18.774ms   (3.3x)       18.419ms   (3.4x) 🟢 62.267ms (1.0x) 🟠
    AddGrow(1, 4, 1048576)³ 42.360ms  (1.3x)       17.060ms   (3.1x)       11.943ms   (4.4x)       32.373ms  (1.6x)       12.042ms   (4.4x)       11.545ms   (4.6x) 🟢 52.967ms (1.0x) 🟠
    AddGrow(1, 65536, 1048576)³ 40.160ms  (1.0x) 🟠 16.465ms   (2.4x)       11.491ms   (3.4x)       30.178ms  (1.3x)       11.307ms   (3.4x)       11.226ms   (3.5x) 🟢 38.751ms (1.0x)      
    Contains(1, 10000) 0.075ms  (4.9x)       0.010ms  (38.6x)       0.006ms  (60.7x) 🟢 0.057ms  (6.5x)       0.010ms  (38.2x)       0.006ms  (59.8x)       0.371ms (1.0x) 🟠
    Contains(2, 10000)² 0.053ms  (7.7x)       0.012ms  (33.2x)       0.011ms  (35.9x)       0.039ms (10.4x)       0.013ms  (30.5x)       0.010ms  (41.8x) 🟢 0.405ms (1.0x) 🟠
    Contains(4, 10000)² 0.487ms  (0.9x) 🟠 0.120ms   (3.6x)       0.009ms  (49.2x) 🟢 0.035ms (12.2x)       0.124ms   (3.5x)       0.120ms   (3.6x)       0.433ms (1.0x)      
    Contains(1, 100000) 0.837ms  (4.7x)       0.116ms  (34.1x)       0.077ms  (51.2x) 🟢 0.639ms  (6.2x)       0.116ms  (34.2x)       0.090ms  (44.2x)       3.965ms (1.0x) 🟠
    Contains(2, 100000)² 0.477ms  (8.8x)       0.099ms  (42.6x)       0.069ms  (61.2x)       0.680ms  (6.2x)       0.096ms  (44.0x)       0.066ms  (63.3x) 🟢 4.198ms (1.0x) 🟠
    Contains(4, 100000)² 0.399ms (12.3x)       0.194ms  (25.3x)       0.178ms  (27.5x)       0.283ms (17.3x)       0.194ms  (25.3x)       0.175ms  (28.0x) 🟢 4.906ms (1.0x) 🟠
    Contains(1, 1000000) 13.971ms  (3.5x)       2.595ms  (18.6x)       1.860ms  (26.0x) 🟢 10.541ms  (4.6x)       2.483ms  (19.5x)       2.100ms  (23.0x)       48.349ms (1.0x) 🟠
    Contains(2, 1000000)² 8.096ms  (6.5x)       1.934ms  (27.4x)       1.246ms  (42.5x) 🟢 6.541ms  (8.1x)       1.594ms  (33.2x)       1.327ms  (39.9x)       52.982ms (1.0x) 🟠
    Contains(4, 1000000)² 4.207ms (14.3x)       1.135ms  (52.9x)       0.919ms  (65.4x)       3.522ms (17.1x)       1.220ms  (49.3x)       0.913ms  (65.8x) 🟢 60.109ms (1.0x) 🟠
    Remove(1, 10000) 0.220ms  (1.6x)       0.093ms   (3.8x)       0.033ms  (10.7x)       0.083ms  (4.2x)       0.033ms  (10.5x)       0.030ms  (11.7x) 🟢 0.351ms (1.0x) 🟠
    Remove(1, 100000) 2.251ms  (1.8x)       1.041ms   (3.8x)       0.406ms   (9.7x) 🟢 0.932ms  (4.2x)       0.420ms   (9.4x)       0.428ms   (9.2x)       3.952ms (1.0x) 🟠
    Remove(1, 1000000) 27.781ms  (1.8x)       12.522ms   (4.0x)       6.399ms   (7.7x) 🟢 11.904ms  (4.2x)       6.407ms   (7.7x)       6.460ms   (7.7x)       49.475ms (1.0x) 🟠
    Foreach(1, 10000) 0.061ms  (0.3x) 🟠 0.018ms   (1.0x)       0.015ms   (1.2x)       0.036ms  (0.5x)       0.012ms   (1.5x)       0.012ms   (1.5x) 🟢 0.019ms (1.0x)      
    Foreach(1, 100000) 0.589ms  (0.3x) 🟠 0.123ms   (1.6x)       0.122ms   (1.6x)       0.339ms  (0.6x)       0.103ms   (1.9x) 🟢 0.114ms   (1.7x)       0.196ms (1.0x)      
    Foreach(1, 1000000) 5.883ms  (0.3x) 🟠 1.070ms   (1.9x)       1.418ms   (1.4x)       3.449ms  (0.6x)       0.966ms   (2.1x) 🟢 0.994ms   (2.0x)       1.984ms (1.0x)      
    UnionWith(1, 10000) 0.521ms  (0.4x) 🟠 0.208ms   (1.0x)       0.154ms   (1.3x) 🟢 0.410ms  (0.5x)       0.173ms   (1.2x)       0.157ms   (1.3x)       0.203ms (1.0x)      
    UnionWith(1, 100000) 5.231ms  (0.4x) 🟠 2.216ms   (1.0x)       1.918ms   (1.1x)       4.134ms  (0.5x)       1.780ms   (1.2x) 🟢 1.825ms   (1.2x)       2.128ms (1.0x)      
    UnionWith(1, 1000000) 76.054ms  (0.4x) 🟠 39.983ms   (0.8x)       32.060ms   (1.1x)       62.585ms  (0.5x)       31.404ms   (1.1x) 🟢 31.980ms   (1.1x)       33.698ms (1.0x)      
    IntersectWith(1, 10000) 0.312ms  (0.7x) 🟠 0.111ms   (1.9x)       0.096ms   (2.2x)       0.208ms  (1.0x)       0.075ms   (2.8x) 🟢 0.095ms   (2.2x)       0.209ms (1.0x)      
    IntersectWith(1, 100000) 3.034ms  (0.7x) 🟠 1.333ms   (1.6x)       1.090ms   (2.0x) 🟢 2.277ms  (0.9x)       1.094ms   (2.0x)       1.129ms   (1.9x)       2.135ms (1.0x)      
    IntersectWith(1, 1000000) 38.309ms  (0.9x) 🟠 16.649ms   (2.0x)       14.463ms   (2.3x) 🟢 30.865ms  (1.1x)       14.468ms   (2.3x)       14.609ms   (2.3x)       33.610ms (1.0x)      
    ExceptWith(1, 10000) 0.300ms  (0.6x) 🟠 0.151ms   (1.2x)       0.090ms   (2.0x)       0.154ms  (1.2x)       0.068ms   (2.7x) 🟢 0.089ms   (2.1x)       0.183ms (1.0x)      
    ExceptWith(1, 100000) 3.106ms  (0.6x) 🟠 1.481ms   (1.2x)       1.030ms   (1.7x)       1.694ms  (1.1x)       0.981ms   (1.8x) 🟢 1.088ms   (1.6x)       1.791ms (1.0x)      
    ExceptWith(1, 1000000) 38.327ms  (0.8x) 🟠 19.119ms   (1.6x)       13.951ms   (2.2x)       23.453ms  (1.3x)       13.483ms   (2.2x)       13.071ms   (2.3x) 🟢 30.299ms (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.044ms   (2.7x)       0.016ms   (7.4x) 🟢 0.028ms   (4.2x)       --- --- --- 0.116ms (1.0x) 🟠
    EnqueueGrow(2, 10000)²˒³ 0.033ms   (5.8x)       0.016ms  (12.3x) 🟢 0.018ms  (10.8x)       --- --- --- 0.192ms (1.0x) 🟠
    EnqueueGrow(4, 10000)²˒³ 0.019ms  (15.6x) 🟢 0.087ms   (3.4x)       0.057ms   (5.2x)       --- --- --- 0.299ms (1.0x) 🟠
    EnqueueGrow(1, 100000)³ 0.444ms   (2.5x)       0.131ms   (8.4x) 🟢 0.268ms   (4.1x)       --- --- --- 1.097ms (1.0x) 🟠
    EnqueueGrow(2, 100000)²˒³ 0.235ms   (7.1x)       0.095ms  (17.8x) 🟢 0.166ms  (10.1x)       --- --- --- 1.678ms (1.0x) 🟠
    EnqueueGrow(4, 100000)²˒³ 0.142ms (105.4x)       0.114ms (131.9x) 🟢 0.159ms  (94.2x)       --- --- --- 14.997ms (1.0x) 🟠
    EnqueueGrow(1, 1000000)³ 5.088ms   (2.1x)       1.357ms   (7.8x) 🟢 3.872ms   (2.7x)       --- --- --- 10.547ms (1.0x) 🟠
    EnqueueGrow(2, 1000000)²˒³ 2.670ms   (5.9x)       0.814ms  (19.3x) 🟢 2.360ms   (6.7x)       --- --- --- 15.698ms (1.0x) 🟠
    EnqueueGrow(4, 1000000)²˒³ 1.433ms  (21.0x)       2.670ms  (11.3x)       0.770ms  (39.1x) 🟢 --- --- --- 30.114ms (1.0x) 🟠
    Enqueue(1, 10000)⁴ 0.043ms   (2.6x)       0.006ms  (17.6x)       0.006ms  (18.8x) 🟢 --- --- --- 0.109ms (1.0x) 🟠
    Enqueue(2, 10000)²˒⁴ 0.030ms   (6.2x)       0.007ms  (25.1x) 🟢 0.019ms   (9.8x)       --- --- --- 0.186ms (1.0x) 🟠
    Enqueue(4, 10000)²˒⁴ 0.017ms  (17.8x)       0.008ms  (38.9x) 🟢 0.042ms   (7.4x)       --- --- --- 0.307ms (1.0x) 🟠
    Enqueue(1, 100000)⁴ 0.441ms   (2.4x)       0.059ms  (18.2x)       0.055ms  (19.6x) 🟢 --- --- --- 1.075ms (1.0x) 🟠
    Enqueue(2, 100000)²˒⁴ 0.231ms   (6.9x)       0.042ms  (37.8x) 🟢 0.046ms  (34.9x)       --- --- --- 1.603ms (1.0x) 🟠
    Enqueue(4, 100000)²˒⁴ 0.197ms  (80.0x)       0.027ms (581.8x) 🟢 0.039ms (408.5x)       --- --- --- 15.768ms (1.0x) 🟠
    Enqueue(1, 1000000)⁴ 4.406ms   (2.4x)       0.583ms  (18.3x)       0.528ms  (20.3x) 🟢 --- --- --- 10.695ms (1.0x) 🟠
    Enqueue(2, 1000000)²˒⁴ 2.247ms   (7.2x)       0.340ms  (47.5x)       0.320ms  (50.4x) 🟢 --- --- --- 16.149ms (1.0x) 🟠
    Enqueue(4, 1000000)²˒⁴ 1.253ms  (24.5x)       0.221ms (138.5x) 🟢 0.228ms (134.8x)       --- --- --- 30.659ms (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.409ms (0.3x) 🟠 0.113ms (1.1x)       0.076ms  (1.6x)       0.164ms (0.7x)       0.000ms (300.8x) 🟢 0.001ms (240.6x)       0.120ms (1.0x)      
    IsEmpty_x_100k(100)¹ 0.450ms (0.3x) 🟠 0.114ms (1.1x)       0.082ms  (1.5x)       0.184ms (0.7x)       0.001ms (245.6x) 🟢 0.001ms (245.6x) 🟢 0.123ms (1.0x)      
    Count_x_100k(0)¹ 0.348ms (0.3x) 🟠 0.103ms (1.0x)       0.062ms  (1.7x)       0.123ms (0.8x)       0.000ms (255.8x) 🟢 0.000ms (255.8x) 🟢 0.102ms (1.0x)      
    Count_x_100k(100)¹ 0.368ms (0.3x) 🟠 0.113ms (0.9x)       0.082ms  (1.2x)       0.143ms (0.7x)       0.000ms (255.8x) 🟢 0.000ms (255.8x) 🟢 0.102ms (1.0x)      
    ToNativeArray(10000) 0.011ms (0.3x)       0.010ms (0.3x)       0.012ms  (0.3x)       0.009ms (0.4x)       0.043ms   (0.1x) 🟠 0.003ms   (1.2x) 🟢 0.003ms (1.0x)      
    ToNativeArray(100000) 0.096ms (0.8x)       0.021ms (3.9x)       0.011ms  (7.2x)       0.107ms (0.8x) 🟠 0.008ms  (10.6x) 🟢 0.008ms  (10.1x)       0.082ms (1.0x)      
    ToNativeArray(1000000) 1.047ms (0.8x)       0.638ms (1.3x)       0.317ms  (2.5x)       1.671ms (0.5x) 🟠 0.201ms   (4.0x)       0.172ms   (4.6x) 🟢 0.798ms (1.0x)      
    EnqueueGrow(10000)³ 0.052ms (0.7x) 🟠 0.017ms (2.3x)       0.016ms  (2.3x)       0.037ms (1.0x)       0.016ms   (2.5x) 🟢 0.016ms   (2.4x)       0.038ms (1.0x)      
    EnqueueGrow(100000)³ 0.580ms (0.8x) 🟠 0.203ms (2.2x)       0.185ms  (2.4x)       0.412ms (1.1x)       0.173ms   (2.6x) 🟢 0.203ms   (2.2x)       0.444ms (1.0x)      
    EnqueueGrow(1000000)³ 5.898ms (0.6x) 🟠 1.728ms (2.2x)       1.492ms  (2.5x)       3.889ms (1.0x)       1.484ms   (2.5x) 🟢 1.501ms   (2.5x)       3.764ms (1.0x)      
    Enqueue(10000)⁴ 0.053ms (0.7x) 🟠 0.009ms (4.3x)       0.007ms  (4.9x) 🟢 0.031ms (1.2x)       0.007ms   (4.9x) 🟢 0.008ms   (4.9x)       0.037ms (1.0x)      
    Enqueue(100000)⁴ 0.561ms (0.6x) 🟠 0.080ms (4.4x)       0.066ms  (5.3x)       0.310ms (1.1x)       0.066ms   (5.3x) 🟢 0.066ms   (5.3x)       0.353ms (1.0x)      
    Enqueue(1000000)⁴ 5.452ms (0.6x) 🟠 0.799ms (4.2x)       0.684ms  (5.0x)       3.174ms (1.1x)       0.688ms   (4.9x)       0.683ms   (5.0x) 🟢 3.390ms (1.0x)      
    Dequeue(10000) 0.052ms (0.5x) 🟠 0.017ms (1.4x) 🟢 0.017ms  (1.4x)       0.031ms (0.8x)       0.017ms   (1.4x)       0.017ms   (1.4x) 🟢 0.024ms (1.0x)      
    Dequeue(100000) 0.534ms (0.4x) 🟠 0.167ms (1.4x)       0.166ms  (1.4x) 🟢 0.292ms (0.8x)       0.168ms   (1.4x)       0.169ms   (1.4x)       0.240ms (1.0x)      
    Dequeue(1000000) 5.258ms (0.5x) 🟠 1.668ms (1.4x) 🟢 1.691ms  (1.4x)       2.909ms (0.8x)       1.683ms   (1.4x)       1.695ms   (1.4x)       2.377ms (1.0x)      
    Peek(10000)¹ 0.027ms (0.6x) 🟠 0.011ms (1.5x)       0.007ms  (2.5x)       0.008ms (2.0x)       0.001ms  (32.8x) 🟢 0.001ms  (32.8x) 🟢 0.016ms (1.0x)      
    Peek(100000)¹ 0.282ms (0.6x) 🟠 0.103ms (1.6x)       0.063ms  (2.6x)       0.080ms (2.0x)       0.001ms (182.1x)       0.001ms (204.9x) 🟢 0.164ms (1.0x)      
    Peek(1000000)¹ 2.814ms (0.6x) 🟠 1.048ms (1.6x)       0.625ms  (2.6x)       0.819ms (2.0x)       0.008ms (204.7x)       0.006ms (292.4x) 🟢 1.637ms (1.0x)      
    Foreach(10000) 0.024ms (1.3x)       0.005ms (6.6x)       0.002ms (12.8x) 🟢 0.018ms (1.7x)       0.003ms  (11.4x)       0.002ms  (12.8x) 🟢 0.031ms (1.0x) 🟠
    Foreach(100000) 0.246ms (1.2x)       0.043ms (7.1x)       0.021ms (14.5x)       0.180ms (1.7x)       0.020ms  (15.7x) 🟢 0.021ms  (14.6x)       0.307ms (1.0x) 🟠
    Foreach(1000000) 2.525ms (1.2x)       0.507ms (5.8x)       0.249ms (11.9x)       1.824ms (1.6x)       0.204ms  (14.5x) 🟢 0.214ms  (13.8x)       2.955ms (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.123ms (0.7x) 🟠 0.037ms (2.2x)       0.037ms (2.2x)       0.100ms (0.8x)       0.025ms (3.2x) 🟢 0.025ms (3.2x)       0.080ms (1.0x)      
    IsEmpty_x_100k(100)¹ 0.123ms (0.7x) 🟠 0.036ms (2.2x)       0.037ms (2.2x)       0.100ms (0.8x)       0.025ms (3.2x) 🟢 0.025ms (3.2x)       0.080ms (1.0x)      
    Count_x_100k(0)¹ 0.201ms (0.5x) 🟠 0.080ms (1.2x)       0.025ms (4.0x) 🟢 0.082ms (1.2x)       0.025ms (4.0x) 🟢 0.026ms (3.9x)       0.100ms (1.0x)      
    Count_x_100k(100)¹ 0.201ms (0.5x) 🟠 0.081ms (1.2x)       0.025ms (4.0x)       0.082ms (1.2x)       0.025ms (4.0x)       0.025ms (4.0x) 🟢 0.100ms (1.0x)      
    Enqueue(10000) 0.023ms (1.2x)       0.019ms (1.5x)       0.009ms (3.2x) 🟢 0.017ms (1.6x)       0.019ms (1.5x)       0.019ms (1.5x)       0.028ms (1.0x) 🟠
    Enqueue(100000) 0.227ms (1.1x)       0.188ms (1.4x)       0.084ms (3.1x) 🟢 0.174ms (1.5x)       0.184ms (1.4x)       0.183ms (1.4x)       0.260ms (1.0x) 🟠
    Enqueue(1000000) 2.329ms (1.1x)       1.864ms (1.4x)       0.837ms (3.2x) 🟢 1.711ms (1.5x)       1.852ms (1.4x)       1.865ms (1.4x)       2.649ms (1.0x) 🟠
    Dequeue(10000) 0.022ms (1.1x)       0.019ms (1.3x)       0.005ms (4.6x)       0.018ms (1.4x)       0.006ms (4.2x)       0.005ms (4.6x) 🟢 0.025ms (1.0x) 🟠
    Dequeue(100000) 0.241ms (1.0x)       0.186ms (1.3x)       0.052ms (4.8x) 🟢 0.180ms (1.4x)       0.057ms (4.3x)       0.052ms (4.8x) 🟢 0.246ms (1.0x) 🟠
    Dequeue(1000000) 2.479ms (1.0x) 🟠 1.871ms (1.3x)       0.528ms (4.6x)       1.945ms (1.2x)       0.571ms (4.2x)       0.502ms (4.8x) 🟢 2.423ms (1.0x)      

    ¹ Optimizations were disabled to perform this benchmark


    In This Article
    Back to top
    Copyright © 2023 Unity Technologies — Trademarks and terms of use
    • Legal
    • Privacy Policy
    • Cookie Policy
    • Do Not Sell or Share My Personal Information
    • Your Privacy Choices (Cookie Settings)