This is the repository for testing various speed improvements for Structure.Sketching and other libs. The results can be found below the conclussions section.
-
When dealing with arrays of data inside of a method, use ArrayPool to allocate.
-
Array.Copy is generally better for smaller arrays. Larger arrays (100,000+), Buffer.MemoryCopy seems to be a better option.
-
For arrays, just treat them as arrays when iterating over them. IEnumerable, etc. slow them down.
-
For arrays, foreach and for have no difference at this point in time.
-
If you can, use Array.Sort and List.Sort. They're much faster than the alternatives.
-
The various old optimizations like bitwise math are no longer effective.
-
Unchecked math no longer seems to be substantially faster.
-
Structs are much faster to create than classes. Setting or getting values is about the same though.
-
For ConcurrentDictionary, use TryGetValue over an index or key lookup.
-
For Dictionary, the type of the key matters. Long, uint, ulong, etc. are much faster than string.
-
Dictionary is much faster than ConcurrentDictionary. Only use ConcurrentDictionary when you need to.
-
Dynamic vs static typing, static is about 10x faster.
-
Byte packing is faster than using an enum but it's about 4ns vs 2ns...
-
Fields are slightly faster than properties in certain circumstances.
-
Dictionary is generally faster than Hashtable if using an int as the key. Hashtable seems slightly faster when dealing with string as the key.
-
Array.Copy and List.CopyTo are much faster at copying data over than other options.
-
Arrays are much faster than alternatives for iteration.
-
++x or x++ makes no difference.
-
Use 'is' instead of any of the clever other options if you can for determining the type of an object.
-
If you can, use List.AddRange instead of List.Add.
-
Using a for loop with Lists is the fastest approach.
-
If you need something that looks like a Dictionary, then just use a Dictionary...
-
If you're going to create a list of items, use AddRange instead of feeding them into the constructor.
-
For small items, MemoryStream is better than RecyclableMemoryStream. For larger items, RecyclableMemoryStream is much better though.
-
In terms of what is better (best to worst): Direct Method Call > Func(=>) > Func(Method) > Cached MethodInfo > new Func(=>) > new Func(Method).
-
For null equality, use either is or ReferenceEquals.
-
If you need to create an object, just use new. If you can't use new, compile/cache a lambda expression.
-
Use partitioning when doing Parallel.ForEach if you need to worry about speed but note there will be a slight memory increase.
-
If you're reading in a whole file, create the whole file in one go. This does not apply for instances where you are streaming the file or modifying portions of it.
-
When you can, cache type info as it's not free.
-
When you can, use a simple Contains instead of using Regex.
-
using pointers into an array is slightly faster than a Span.
-
stackalloc seems to be a speed boost at larger number of items.
-
Do not use a statuc constructor if you don't need to. It gets called every time you call a method on the class.
-
Use a StringBuilder instead of string concat. Memory and speed improvements for anything 100+ concatenations.
-
If you're formatting a string, string concat is usually faster than things like string interpolation.
-
If you can use a StringBuilderPool. Faster and memory improvements to be had.
-
If you are going to replace a value in a string, use string.Replace instead of StringBuilder.Replace.
-
String.Substring works slightly better than Span.Slice.
-
Using string.Substring works better than Trim for small strings. Larger strings, Trim works better.
-
Vector works better than dealing with straight struct, byte array, etc. in terms of speed. Memory increases though.
BenchmarkDotNet=v0.13.1, OS=Windows 10.0.19042.1165 (20H2/October2020Update)
Intel Core i7-9850H CPU 2.60GHz, 1 CPU, 12 logical and 6 physical cores
.NET SDK=5.0.303
[Host] : .NET 5.0.9 (5.0.921.35908), X64 RyuJIT
DefaultJob : .NET 5.0.9 (5.0.921.35908), X64 RyuJIT
Allocation Strategy Tests
Method | Count | Mean | Error | StdDev | StdErr | Median | Min | Q1 | Q3 | Max | Op/s | Ratio | RatioSD | Rank | Gen 0 | Gen 1 | Gen 2 | Allocated |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
'Allocate as needed' | 100 | 56.12 ns | 1.134 ns | 1.662 ns | 0.309 ns | 55.71 ns | 53.39 ns | 54.98 ns | 57.10 ns | 60.07 ns | 17,817,409.3 | 1.00 | 0.00 | 2 | 0.0675 | - | - | 424 B |
ArrayPool | 100 | 52.99 ns | 1.049 ns | 0.981 ns | 0.253 ns | 53.08 ns | 51.72 ns | 52.13 ns | 53.51 ns | 55.33 ns | 18,870,851.6 | 0.93 | 0.03 | 1 | - | - | - | - |
'Item from pointer to preallocated array 'pool'' | 100 | 102.99 ns | 1.567 ns | 1.389 ns | 0.371 ns | 103.37 ns | 101.09 ns | 101.57 ns | 103.84 ns | 105.31 ns | 9,709,521.8 | 1.80 | 0.05 | 4 | - | - | - | - |
'Span from preallocated array 'pool'' | 100 | 99.15 ns | 1.173 ns | 1.040 ns | 0.278 ns | 98.87 ns | 97.79 ns | 98.55 ns | 99.43 ns | 101.05 ns | 10,085,768.4 | 1.73 | 0.04 | 3 | - | - | - | - |
'Allocate as needed' | 1000 | 534.01 ns | 52.968 ns | 154.511 ns | 15.608 ns | 482.06 ns | 377.06 ns | 402.84 ns | 642.89 ns | 939.27 ns | 1,872,612.8 | 1.00 | 0.00 | 2 | 0.6413 | - | - | 4,024 B |
ArrayPool | 1000 | 285.37 ns | 4.622 ns | 8.682 ns | 1.309 ns | 283.82 ns | 276.96 ns | 279.07 ns | 286.53 ns | 317.50 ns | 3,504,181.7 | 0.61 | 0.13 | 1 | - | - | - | - |
'Item from pointer to preallocated array 'pool'' | 1000 | 1,006.20 ns | 7.074 ns | 6.271 ns | 1.676 ns | 1,005.33 ns | 996.64 ns | 1,003.08 ns | 1,009.33 ns | 1,018.39 ns | 993,841.9 | 1.67 | 0.26 | 3 | - | - | - | - |
'Span from preallocated array 'pool'' | 1000 | 1,004.87 ns | 16.886 ns | 15.795 ns | 4.078 ns | 1,000.94 ns | 985.84 ns | 993.87 ns | 1,015.74 ns | 1,030.93 ns | 995,155.5 | 1.65 | 0.26 | 3 | - | - | - | - |
'Allocate as needed' | 10000 | 3,618.63 ns | 66.337 ns | 110.834 ns | 18.472 ns | 3,594.44 ns | 3,435.67 ns | 3,551.89 ns | 3,701.35 ns | 3,909.66 ns | 276,347.4 | 1.00 | 0.00 | 2 | 6.3248 | - | - | 40,024 B |
ArrayPool | 10000 | 2,471.36 ns | 22.579 ns | 21.120 ns | 5.453 ns | 2,468.43 ns | 2,447.23 ns | 2,451.19 ns | 2,478.83 ns | 2,514.19 ns | 404,635.3 | 0.67 | 0.02 | 1 | - | - | - | - |
'Item from pointer to preallocated array 'pool'' | 10000 | 10,991.06 ns | 214.129 ns | 552.736 ns | 62.585 ns | 10,775.12 ns | 10,436.06 ns | 10,663.93 ns | 10,981.38 ns | 12,812.01 ns | 90,983.1 | 3.13 | 0.16 | 3 | - | - | - | - |
'Span from preallocated array 'pool'' | 10000 | 10,824.17 ns | 199.923 ns | 187.008 ns | 48.285 ns | 10,855.97 ns | 10,534.45 ns | 10,704.88 ns | 10,940.28 ns | 11,215.16 ns | 92,385.8 | 2.92 | 0.09 | 3 | - | - | - | - |
'Allocate as needed' | 100000 | 44,122.70 ns | 1,758.718 ns | 5,185.619 ns | 518.562 ns | 41,278.75 ns | 39,662.34 ns | 40,671.17 ns | 47,442.11 ns | 57,506.78 ns | 22,664.1 | 1.00 | 0.00 | 2 | 124.9390 | 124.9390 | 124.9390 | 400,024 B |
ArrayPool | 100000 | 36,445.91 ns | 3,452.459 ns | 10,179.654 ns | 1,017.965 ns | 33,107.53 ns | 25,222.46 ns | 28,612.70 ns | 45,130.26 ns | 69,482.34 ns | 27,437.9 | 0.84 | 0.25 | 1 | - | - | - | 16 B |
'Item from pointer to preallocated array 'pool'' | 100000 | 162,389.81 ns | 12,894.135 ns | 37,408.224 ns | 3,798.230 ns | 147,649.68 ns | 116,530.59 ns | 132,376.15 ns | 192,439.43 ns | 275,619.95 ns | 6,158.0 | 3.65 | 0.59 | 3 | - | - | - | - |
'Span from preallocated array 'pool'' | 100000 | 202,003.98 ns | 11,628.267 ns | 34,286.209 ns | 3,428.621 ns | 204,942.19 ns | 136,907.60 ns | 188,273.36 ns | 225,580.81 ns | 273,378.09 ns | 4,950.4 | 4.62 | 0.87 | 4 | - | - | - | - |
Array Copy Tests
Method | Count | Mean | Error | StdDev | StdErr | Median | Min | Q1 | Q3 | Max | Op/s | Ratio | RatioSD | Rank | Allocated |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
'Copy using Array.Copy()' | 100 | 4.759 ns | 0.2609 ns | 0.7315 ns | 0.0767 ns | 4.394 ns | 4.228 ns | 4.324 ns | 4.774 ns | 6.613 ns | 210,129,894.8 | 1.00 | 0.00 | 1 | - |
'Copy using Buffer.MemoryCopy<T>' | 100 | 5.064 ns | 0.0569 ns | 0.0504 ns | 0.0135 ns | 5.065 ns | 4.994 ns | 5.021 ns | 5.103 ns | 5.143 ns | 197,488,456.1 | 0.80 | 0.04 | 2 | - |
'Copy using Array.Copy()' | 1000 | 24.799 ns | 1.4591 ns | 4.3023 ns | 0.4302 ns | 23.771 ns | 20.163 ns | 20.548 ns | 28.693 ns | 37.130 ns | 40,324,638.9 | 1.00 | 0.00 | 1 | - |
'Copy using Buffer.MemoryCopy<T>' | 1000 | 28.366 ns | 0.2915 ns | 0.2727 ns | 0.0704 ns | 28.387 ns | 27.777 ns | 28.198 ns | 28.568 ns | 28.790 ns | 35,253,247.0 | 1.06 | 0.23 | 2 | - |
'Copy using Array.Copy()' | 10000 | 146.887 ns | 0.7626 ns | 0.7133 ns | 0.1842 ns | 146.974 ns | 145.934 ns | 146.208 ns | 147.426 ns | 148.033 ns | 6,807,943.3 | 1.00 | 0.00 | 1 | - |
'Copy using Buffer.MemoryCopy<T>' | 10000 | 145.307 ns | 1.2286 ns | 1.0891 ns | 0.2911 ns | 145.052 ns | 143.987 ns | 144.487 ns | 145.735 ns | 147.334 ns | 6,881,989.7 | 0.99 | 0.01 | 1 | - |
'Copy using Array.Copy()' | 100000 | 2,466.015 ns | 48.6846 ns | 43.1577 ns | 11.5344 ns | 2,462.106 ns | 2,385.767 ns | 2,440.302 ns | 2,503.870 ns | 2,534.995 ns | 405,512.5 | 1.00 | 0.00 | 2 | - |
'Copy using Buffer.MemoryCopy<T>' | 100000 | 1,953.516 ns | 39.0490 ns | 82.3676 ns | 11.2088 ns | 1,924.865 ns | 1,856.736 ns | 1,898.436 ns | 1,984.247 ns | 2,168.823 ns | 511,897.6 | 0.83 | 0.04 | 1 | - |
Array Interface Iteration
Method | Count | Mean | Error | StdDev | StdErr | Median | Min | Q1 | Q3 | Max | Op/s | Ratio | RatioSD | Rank | Gen 0 | Allocated |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
'T[] ForEach' | 100 | 33.14 ns | 0.353 ns | 0.330 ns | 0.085 ns | 33.09 ns | 32.52 ns | 32.93 ns | 33.36 ns | 33.74 ns | 30,174,718.9 | 0.99 | 0.02 | 1 | - | - |
'T[] For' | 100 | 33.44 ns | 0.681 ns | 0.637 ns | 0.165 ns | 33.26 ns | 32.78 ns | 32.93 ns | 33.77 ns | 34.69 ns | 29,901,335.1 | 1.00 | 0.00 | 1 | - | - |
'ICollection ForEach' | 100 | 6,305.65 ns | 125.607 ns | 315.122 ns | 36.632 ns | 6,236.68 ns | 5,762.93 ns | 6,079.30 ns | 6,527.53 ns | 7,214.67 ns | 158,587.9 | 190.07 | 12.52 | 8 | 0.3815 | 2,432 B |
'ICollection<T> ForEach' | 100 | 403.83 ns | 7.136 ns | 7.931 ns | 1.820 ns | 401.21 ns | 394.14 ns | 399.84 ns | 406.20 ns | 420.56 ns | 2,476,293.8 | 12.13 | 0.39 | 4 | 0.0048 | 32 B |
'IEnumerable ForEach' | 100 | 4,715.60 ns | 40.706 ns | 38.077 ns | 9.831 ns | 4,706.11 ns | 4,663.34 ns | 4,687.45 ns | 4,741.61 ns | 4,783.22 ns | 212,062.1 | 141.04 | 2.37 | 6 | 0.3815 | 2,432 B |
'IEnumerable<T> ForEach' | 100 | 402.51 ns | 6.406 ns | 5.992 ns | 1.547 ns | 401.63 ns | 393.81 ns | 397.50 ns | 407.22 ns | 413.97 ns | 2,484,389.1 | 12.04 | 0.22 | 4 | 0.0048 | 32 B |
'IList ForEach' | 100 | 5,366.09 ns | 265.262 ns | 782.130 ns | 78.213 ns | 5,400.17 ns | 4,317.29 ns | 4,594.29 ns | 5,869.63 ns | 7,502.37 ns | 186,355.3 | 154.27 | 23.81 | 7 | 0.3815 | 2,432 B |
'IList<T> ForEach' | 100 | 384.35 ns | 4.120 ns | 3.854 ns | 0.995 ns | 384.89 ns | 379.21 ns | 381.11 ns | 386.67 ns | 393.07 ns | 2,601,765.2 | 11.50 | 0.24 | 4 | 0.0048 | 32 B |
'IList<T> For' | 100 | 224.63 ns | 2.039 ns | 1.907 ns | 0.492 ns | 224.10 ns | 222.21 ns | 223.18 ns | 225.81 ns | 229.10 ns | 4,451,844.7 | 6.72 | 0.11 | 2 | - | - |
'IList For' | 100 | 4,232.43 ns | 78.986 ns | 84.514 ns | 19.920 ns | 4,218.67 ns | 4,094.04 ns | 4,179.01 ns | 4,277.19 ns | 4,409.10 ns | 236,271.1 | 126.68 | 2.59 | 5 | 0.3815 | 2,400 B |
'IReadOnlyCollection<T> ForEach' | 100 | 390.49 ns | 6.611 ns | 6.184 ns | 1.597 ns | 393.31 ns | 380.75 ns | 385.73 ns | 394.70 ns | 400.34 ns | 2,560,874.6 | 11.68 | 0.23 | 4 | 0.0048 | 32 B |
'IReadOnlyList<T> ForEach' | 100 | 401.08 ns | 8.054 ns | 17.679 ns | 2.321 ns | 398.32 ns | 377.68 ns | 389.95 ns | 405.86 ns | 458.52 ns | 2,493,246.7 | 12.24 | 0.86 | 4 | 0.0048 | 32 B |
'IReadOnlyList<T> For' | 100 | 229.88 ns | 3.120 ns | 2.605 ns | 0.722 ns | 230.18 ns | 224.44 ns | 229.72 ns | 231.03 ns | 233.67 ns | 4,350,109.9 | 6.89 | 0.19 | 3 | - | - |
'T[] ForEach' | 1000 | 280.47 ns | 8.572 ns | 24.731 ns | 2.524 ns | 275.91 ns | 248.41 ns | 258.68 ns | 299.31 ns | 367.93 ns | 3,565,396.1 | 1.08 | 0.08 | 2 | - | - |
'T[] For' | 1000 | 250.84 ns | 3.233 ns | 3.320 ns | 0.805 ns | 250.15 ns | 245.45 ns | 249.23 ns | 251.32 ns | 257.89 ns | 3,986,647.4 | 1.00 | 0.00 | 1 | - | - |
'ICollection ForEach' | 1000 | 50,343.64 ns | 1,967.893 ns | 5,802.377 ns | 580.238 ns | 46,996.89 ns | 44,401.92 ns | 45,482.51 ns | 55,667.83 ns | 63,158.38 ns | 19,863.5 | 206.95 | 26.56 | 7 | 3.7842 | 24,032 B |
'ICollection<T> ForEach' | 1000 | 3,700.79 ns | 65.625 ns | 61.385 ns | 15.850 ns | 3,674.13 ns | 3,627.54 ns | 3,657.52 ns | 3,749.90 ns | 3,835.51 ns | 270,212.9 | 14.76 | 0.20 | 4 | 0.0038 | 32 B |
'IEnumerable ForEach' | 1000 | 43,726.26 ns | 650.471 ns | 608.451 ns | 157.101 ns | 43,669.40 ns | 42,936.36 ns | 43,197.35 ns | 44,106.73 ns | 45,162.50 ns | 22,869.6 | 174.42 | 3.17 | 6 | 3.7842 | 24,032 B |
'IEnumerable<T> ForEach' | 1000 | 3,670.50 ns | 27.603 ns | 25.820 ns | 6.667 ns | 3,668.03 ns | 3,623.95 ns | 3,652.06 ns | 3,693.16 ns | 3,709.39 ns | 272,442.4 | 14.64 | 0.19 | 4 | 0.0038 | 32 B |
'IList ForEach' | 1000 | 44,380.90 ns | 825.923 ns | 772.569 ns | 199.477 ns | 44,220.83 ns | 43,471.98 ns | 43,762.66 ns | 44,972.17 ns | 45,913.90 ns | 22,532.2 | 177.03 | 3.56 | 6 | 3.7842 | 24,032 B |
'IList<T> ForEach' | 1000 | 3,724.77 ns | 39.746 ns | 35.234 ns | 9.417 ns | 3,718.65 ns | 3,671.70 ns | 3,704.67 ns | 3,748.60 ns | 3,803.30 ns | 268,473.2 | 14.86 | 0.26 | 4 | 0.0038 | 32 B |
'IList<T> For' | 1000 | 2,292.13 ns | 45.742 ns | 125.217 ns | 13.425 ns | 2,235.74 ns | 2,189.63 ns | 2,217.81 ns | 2,292.13 ns | 2,681.89 ns | 436,275.5 | 9.50 | 0.84 | 3 | - | - |
'IList For' | 1000 | 41,985.74 ns | 284.316 ns | 265.949 ns | 68.668 ns | 41,970.47 ns | 41,533.08 ns | 41,786.44 ns | 42,149.01 ns | 42,436.58 ns | 23,817.6 | 167.47 | 2.09 | 5 | 3.7842 | 24,000 B |
'IReadOnlyCollection<T> ForEach' | 1000 | 3,723.58 ns | 32.423 ns | 28.742 ns | 7.682 ns | 3,722.26 ns | 3,675.26 ns | 3,709.30 ns | 3,734.30 ns | 3,782.82 ns | 268,558.9 | 14.86 | 0.24 | 4 | 0.0038 | 32 B |
'IReadOnlyList<T> ForEach' | 1000 | 3,728.94 ns | 21.709 ns | 20.307 ns | 5.243 ns | 3,729.01 ns | 3,689.50 ns | 3,713.40 ns | 3,745.30 ns | 3,762.13 ns | 268,172.8 | 14.87 | 0.22 | 4 | 0.0038 | 32 B |
'IReadOnlyList<T> For' | 1000 | 2,210.42 ns | 15.137 ns | 11.818 ns | 3.412 ns | 2,215.61 ns | 2,183.52 ns | 2,201.32 ns | 2,218.04 ns | 2,222.18 ns | 452,402.8 | 8.81 | 0.15 | 3 | - | - |
'T[] ForEach' | 10000 | 2,480.21 ns | 28.173 ns | 24.975 ns | 6.675 ns | 2,472.34 ns | 2,446.79 ns | 2,462.87 ns | 2,490.44 ns | 2,533.64 ns | 403,191.1 | 1.00 | 0.01 | 1 | - | - |
'T[] For' | 10000 | 2,479.78 ns | 22.468 ns | 21.016 ns | 5.426 ns | 2,481.48 ns | 2,448.21 ns | 2,464.95 ns | 2,493.74 ns | 2,523.66 ns | 403,262.3 | 1.00 | 0.00 | 1 | - | - |
'ICollection ForEach' | 10000 | 450,664.23 ns | 4,762.307 ns | 4,454.664 ns | 1,150.189 ns | 449,032.81 ns | 445,330.52 ns | 447,427.54 ns | 455,472.90 ns | 458,911.82 ns | 2,218.9 | 181.74 | 2.01 | 6 | 38.0859 | 240,032 B |
'ICollection<T> ForEach' | 10000 | 36,977.17 ns | 422.986 ns | 395.661 ns | 102.159 ns | 36,877.27 ns | 36,556.82 ns | 36,657.64 ns | 37,227.68 ns | 37,866.51 ns | 27,043.7 | 14.91 | 0.21 | 3 | - | 32 B |
'IEnumerable ForEach' | 10000 | 440,496.38 ns | 8,157.467 ns | 7,630.499 ns | 1,970.186 ns | 438,060.89 ns | 432,176.12 ns | 434,677.51 ns | 444,265.14 ns | 457,686.23 ns | 2,270.2 | 177.65 | 3.52 | 5 | 38.0859 | 240,032 B |
'IEnumerable<T> ForEach' | 10000 | 36,923.64 ns | 301.570 ns | 267.334 ns | 71.448 ns | 36,907.21 ns | 36,401.15 ns | 36,799.58 ns | 37,136.48 ns | 37,355.09 ns | 27,082.9 | 14.90 | 0.20 | 3 | - | 32 B |
'IList ForEach' | 10000 | 476,414.52 ns | 12,121.599 ns | 34,386.957 ns | 3,565.761 ns | 461,221.48 ns | 441,994.63 ns | 455,110.25 ns | 482,209.57 ns | 569,192.48 ns | 2,099.0 | 219.27 | 9.70 | 7 | 38.0859 | 240,032 B |
'IList<T> ForEach' | 10000 | 36,810.24 ns | 251.114 ns | 222.606 ns | 59.494 ns | 36,760.12 ns | 36,536.97 ns | 36,651.23 ns | 36,871.08 ns | 37,279.57 ns | 27,166.4 | 14.85 | 0.19 | 3 | - | 32 B |
'IList<T> For' | 10000 | 22,074.95 ns | 126.265 ns | 111.930 ns | 29.915 ns | 22,059.32 ns | 21,925.39 ns | 22,007.81 ns | 22,134.80 ns | 22,359.59 ns | 45,300.2 | 8.91 | 0.09 | 2 | - | - |
'IList For' | 10000 | 402,517.07 ns | 3,872.707 ns | 3,433.054 ns | 917.522 ns | 402,738.26 ns | 395,414.01 ns | 400,576.17 ns | 404,575.00 ns | 408,203.12 ns | 2,484.4 | 162.39 | 1.93 | 4 | 38.0859 | 240,000 B |
'IReadOnlyCollection<T> ForEach' | 10000 | 36,816.23 ns | 218.154 ns | 193.388 ns | 51.685 ns | 36,818.44 ns | 36,470.48 ns | 36,679.02 ns | 36,895.48 ns | 37,180.02 ns | 27,161.9 | 14.85 | 0.15 | 3 | - | 32 B |
'IReadOnlyList<T> ForEach' | 10000 | 37,731.43 ns | 665.521 ns | 1,645.003 ns | 193.865 ns | 37,105.96 ns | 36,388.18 ns | 36,871.87 ns | 37,515.64 ns | 43,512.96 ns | 26,503.1 | 16.10 | 1.00 | 3 | - | 32 B |
'IReadOnlyList<T> For' | 10000 | 22,039.42 ns | 158.744 ns | 148.489 ns | 38.340 ns | 22,065.38 ns | 21,826.13 ns | 21,916.03 ns | 22,112.66 ns | 22,344.01 ns | 45,373.2 | 8.89 | 0.10 | 2 | - | - |
'T[] ForEach' | 100000 | 24,965.73 ns | 280.914 ns | 262.767 ns | 67.846 ns | 24,982.91 ns | 24,429.50 ns | 24,828.94 ns | 25,103.50 ns | 25,421.77 ns | 40,054.9 | 1.00 | 0.02 | 1 | - | - |
'T[] For' | 100000 | 24,988.13 ns | 367.489 ns | 343.749 ns | 88.756 ns | 24,942.79 ns | 24,486.06 ns | 24,733.16 ns | 25,140.39 ns | 25,682.75 ns | 40,019.0 | 1.00 | 0.00 | 1 | - | - |
'ICollection ForEach' | 100000 | 4,663,385.49 ns | 27,701.424 ns | 24,556.591 ns | 6,563.025 ns | 4,656,078.52 ns | 4,625,183.59 ns | 4,646,250.98 ns | 4,681,358.20 ns | 4,710,471.09 ns | 214.4 | 186.56 | 3.30 | 5 | 375.0000 | 2,400,032 B |
'ICollection<T> ForEach' | 100000 | 369,654.39 ns | 2,242.035 ns | 1,987.506 ns | 531.183 ns | 369,184.55 ns | 366,654.08 ns | 368,409.12 ns | 371,200.72 ns | 372,945.53 ns | 2,705.2 | 14.79 | 0.21 | 3 | - | 32 B |
'IEnumerable ForEach' | 100000 | 4,990,289.50 ns | 220,968.240 ns | 651,529.842 ns | 65,152.984 ns | 4,757,632.81 ns | 4,301,846.88 ns | 4,415,105.27 ns | 5,462,233.40 ns | 6,792,057.81 ns | 200.4 | 237.87 | 25.20 | 5 | 375.0000 | 2,400,032 B |
'IEnumerable<T> ForEach' | 100000 | 371,595.68 ns | 4,343.646 ns | 3,850.529 ns | 1,029.097 ns | 371,729.42 ns | 366,337.60 ns | 368,775.24 ns | 373,126.15 ns | 379,641.02 ns | 2,691.1 | 14.87 | 0.30 | 3 | - | 32 B |
'IList ForEach' | 100000 | 4,694,311.72 ns | 81,029.927 ns | 137,594.965 ns | 22,620.473 ns | 4,650,526.56 ns | 4,513,776.56 ns | 4,603,207.81 ns | 4,754,300.00 ns | 5,078,842.19 ns | 213.0 | 189.68 | 6.76 | 5 | 375.0000 | 2,400,032 B |
'IList<T> ForEach' | 100000 | 402,224.50 ns | 13,545.307 ns | 39,938.644 ns | 3,993.864 ns | 382,351.61 ns | 356,554.74 ns | 371,107.48 ns | 435,103.78 ns | 526,843.99 ns | 2,486.2 | 17.23 | 1.70 | 3 | - | 32 B |
'IList<T> For' | 100000 | 222,684.55 ns | 3,440.825 ns | 8,309.978 ns | 1,000.404 ns | 220,208.67 ns | 214,452.81 ns | 218,039.67 ns | 224,709.33 ns | 257,734.42 ns | 4,490.7 | 9.25 | 0.60 | 2 | - | - |
'IList For' | 100000 | 4,148,977.19 ns | 42,713.866 ns | 39,954.577 ns | 10,316.227 ns | 4,141,464.06 ns | 4,085,260.94 ns | 4,122,689.45 ns | 4,185,319.14 ns | 4,209,053.91 ns | 241.0 | 166.07 | 3.15 | 4 | 375.0000 | 2,400,000 B |
'IReadOnlyCollection<T> ForEach' | 100000 | 374,118.02 ns | 4,429.091 ns | 3,926.274 ns | 1,049.341 ns | 373,143.12 ns | 368,553.76 ns | 371,995.09 ns | 375,823.57 ns | 381,178.22 ns | 2,673.0 | 14.97 | 0.28 | 3 | - | 32 B |
'IReadOnlyList<T> ForEach' | 100000 | 369,692.28 ns | 5,282.174 ns | 4,940.949 ns | 1,275.748 ns | 367,041.46 ns | 362,866.11 ns | 366,144.36 ns | 374,412.79 ns | 377,804.25 ns | 2,705.0 | 14.80 | 0.34 | 3 | - | 32 B |
'IReadOnlyList<T> For' | 100000 | 228,563.38 ns | 5,373.123 ns | 15,588.405 ns | 1,582.763 ns | 220,645.70 ns | 213,789.77 ns | 218,444.41 ns | 230,251.32 ns | 267,281.05 ns | 4,375.2 | 9.82 | 0.81 | 2 | - | - |
Array Sort Tests
Method | Count | Mean | Error | StdDev | StdErr | Median | Min | Q1 | Q3 | Max | Op/s | Ratio | RatioSD | Rank | Gen 0 | Gen 1 | Gen 2 | Allocated |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
'Linq Array.OrderBy()' | 100 | 4,407.8 ns | 59.68 ns | 55.82 ns | 14.41 ns | 4,394.4 ns | 4,320.4 ns | 4,372.2 ns | 4,422.7 ns | 4,521.8 ns | 226,869.27 | 1.00 | 0.00 | 3 | 0.2975 | - | - | 1,872 B |
Array.OrderByF() | 100 | 988.5 ns | 19.36 ns | 24.49 ns | 5.11 ns | 986.8 ns | 953.2 ns | 967.1 ns | 999.1 ns | 1,041.8 ns | 1,011,641.49 | 0.23 | 0.00 | 2 | 0.1335 | - | - | 848 B |
'PLinq Array.AsParallel().OrderBy()' | 100 | 38,481.5 ns | 3,663.26 ns | 10,801.21 ns | 1,080.12 ns | 34,617.3 ns | 25,536.8 ns | 30,369.8 ns | 48,373.9 ns | 66,111.2 ns | 25,986.53 | 8.88 | 1.64 | 6 | 17.1204 | 2.3804 | - | 69,222 B |
Array.Sort() | 100 | 296.6 ns | 18.36 ns | 53.55 ns | 5.41 ns | 295.5 ns | 240.8 ns | 246.4 ns | 328.1 ns | 447.5 ns | 3,371,910.16 | 0.08 | 0.01 | 1 | - | - | - | - |
List.OrderBy | 100 | 4,486.0 ns | 19.55 ns | 17.33 ns | 4.63 ns | 4,482.4 ns | 4,461.7 ns | 4,475.6 ns | 4,497.1 ns | 4,525.0 ns | 222,917.47 | 1.02 | 0.01 | 4 | 0.2975 | - | - | 1,904 B |
List.OrderByF | 100 | 5,611.2 ns | 30.87 ns | 25.78 ns | 7.15 ns | 5,615.8 ns | 5,539.3 ns | 5,604.9 ns | 5,622.5 ns | 5,650.8 ns | 178,215.73 | 1.27 | 0.02 | 5 | 0.0839 | - | - | 552 B |
List.Sort() | 100 | 280.8 ns | 10.36 ns | 30.56 ns | 3.06 ns | 277.2 ns | 243.3 ns | 250.9 ns | 305.5 ns | 354.6 ns | 3,561,055.38 | 0.07 | 0.00 | 1 | - | - | - | - |
'Linq Array.OrderBy()' | 1000 | 84,885.4 ns | 472.07 ns | 418.47 ns | 111.84 ns | 84,887.0 ns | 84,210.0 ns | 84,571.8 ns | 85,026.2 ns | 85,708.6 ns | 11,780.59 | 1.00 | 0.00 | 4 | 2.5635 | - | - | 16,272 B |
Array.OrderByF() | 1000 | 29,455.7 ns | 1,095.75 ns | 3,230.83 ns | 323.08 ns | 27,501.4 ns | 27,185.9 ns | 27,365.7 ns | 31,845.8 ns | 38,371.0 ns | 33,949.25 | 0.36 | 0.05 | 3 | 1.2817 | - | - | 8,048 B |
'PLinq Array.AsParallel().OrderBy()' | 1000 | 129,419.7 ns | 12,437.99 ns | 36,673.71 ns | 3,667.37 ns | 122,285.2 ns | 75,837.1 ns | 97,444.6 ns | 165,298.0 ns | 196,484.6 ns | 7,726.80 | 1.09 | 0.14 | 6 | 22.4609 | 3.9063 | - | 122,569 B |
Array.Sort() | 1000 | 3,994.2 ns | 146.81 ns | 432.86 ns | 43.29 ns | 4,183.2 ns | 3,462.9 ns | 3,509.9 ns | 4,340.5 ns | 4,958.0 ns | 250,363.14 | 0.05 | 0.01 | 2 | - | - | - | - |
List.OrderBy | 1000 | 85,837.5 ns | 1,188.47 ns | 1,111.69 ns | 287.04 ns | 85,432.4 ns | 84,382.7 ns | 85,094.9 ns | 86,443.2 ns | 88,051.0 ns | 11,649.92 | 1.01 | 0.01 | 4 | 2.5635 | - | - | 16,304 B |
List.OrderByF | 1000 | 93,590.0 ns | 1,375.49 ns | 1,286.64 ns | 332.21 ns | 93,446.6 ns | 91,265.5 ns | 92,976.7 ns | 94,346.4 ns | 96,124.2 ns | 10,684.90 | 1.10 | 0.02 | 5 | 0.6104 | - | - | 4,152 B |
List.Sort() | 1000 | 3,743.8 ns | 38.62 ns | 78.88 ns | 11.05 ns | 3,723.9 ns | 3,639.8 ns | 3,684.3 ns | 3,782.5 ns | 4,033.1 ns | 267,106.63 | 0.04 | 0.00 | 1 | - | - | - | - |
'Linq Array.OrderBy()' | 10000 | 1,140,143.3 ns | 7,118.25 ns | 5,944.06 ns | 1,648.59 ns | 1,140,619.7 ns | 1,130,695.1 ns | 1,136,838.1 ns | 1,142,943.8 ns | 1,152,775.8 ns | 877.08 | 1.00 | 0.00 | 3 | 25.3906 | 5.8594 | - | 160,272 B |
Array.OrderByF() | 10000 | 479,746.8 ns | 3,042.82 ns | 2,697.38 ns | 720.91 ns | 479,661.7 ns | 475,625.0 ns | 477,795.3 ns | 480,621.0 ns | 485,525.3 ns | 2,084.43 | 0.42 | 0.00 | 2 | 12.2070 | - | - | 80,048 B |
'PLinq Array.AsParallel().OrderBy()' | 10000 | 559,012.6 ns | 47,484.16 ns | 140,008.11 ns | 14,000.81 ns | 493,089.6 ns | 416,658.5 ns | 445,621.9 ns | 710,935.0 ns | 864,600.6 ns | 1,788.87 | 0.38 | 0.01 | 2 | 137.6953 | 9.7656 | - | 775,896 B |
Array.Sort() | 10000 | 53,484.4 ns | 1,971.00 ns | 5,749.50 ns | 580.79 ns | 54,292.9 ns | 46,583.5 ns | 47,690.9 ns | 57,136.8 ns | 69,607.1 ns | 18,697.04 | 0.05 | 0.00 | 1 | - | - | - | - |
List.OrderBy | 10000 | 1,184,776.6 ns | 22,151.53 ns | 19,636.76 ns | 5,248.14 ns | 1,179,572.6 ns | 1,156,454.9 ns | 1,176,131.9 ns | 1,191,886.7 ns | 1,226,707.8 ns | 844.04 | 1.04 | 0.02 | 4 | 25.3906 | 5.8594 | - | 160,304 B |
List.OrderByF | 10000 | 1,285,173.1 ns | 20,487.54 ns | 19,164.05 ns | 4,948.14 ns | 1,281,280.4 ns | 1,249,514.7 ns | 1,272,730.9 ns | 1,303,005.6 ns | 1,315,475.1 ns | 778.11 | 1.13 | 0.02 | 5 | 5.8594 | - | - | 40,152 B |
List.Sort() | 10000 | 55,012.1 ns | 824.67 ns | 771.40 ns | 199.17 ns | 54,851.2 ns | 53,541.4 ns | 54,453.5 ns | 55,468.5 ns | 56,504.6 ns | 18,177.81 | 0.05 | 0.00 | 1 | - | - | - | - |
'Linq Array.OrderBy()' | 100000 | 15,606,035.1 ns | 289,376.42 ns | 676,408.05 ns | 83,898.09 ns | 15,423,529.7 ns | 14,979,290.6 ns | 15,257,140.6 ns | 15,674,523.4 ns | 18,496,048.4 ns | 64.08 | 1.00 | 0.00 | 4 | 406.2500 | 406.2500 | 406.2500 | 1,602,034 B |
Array.OrderByF() | 100000 | 6,143,965.1 ns | 120,888.29 ns | 157,188.92 ns | 32,086.05 ns | 6,101,582.0 ns | 5,877,434.4 ns | 6,035,355.3 ns | 6,253,035.2 ns | 6,435,107.8 ns | 162.76 | 0.39 | 0.03 | 2 | 203.1250 | 203.1250 | 203.1250 | 800,043 B |
'PLinq Array.AsParallel().OrderBy()' | 100000 | 7,458,489.7 ns | 533,163.46 ns | 1,572,044.50 ns | 157,204.45 ns | 8,065,553.9 ns | 4,980,988.3 ns | 5,748,154.5 ns | 8,569,432.0 ns | 11,147,761.7 ns | 134.08 | 0.49 | 0.11 | 3 | 1851.5625 | 1781.2500 | 1000.0000 | 8,966,646 B |
Array.Sort() | 100000 | 525,143.1 ns | 5,377.12 ns | 5,029.76 ns | 1,298.68 ns | 523,843.7 ns | 519,180.1 ns | 521,061.0 ns | 528,684.8 ns | 533,768.5 ns | 1,904.24 | 0.03 | 0.00 | 1 | - | - | - | - |
List.OrderBy | 100000 | 15,203,791.4 ns | 260,626.31 ns | 243,790.01 ns | 62,946.31 ns | 15,193,157.8 ns | 14,832,623.4 ns | 15,029,870.3 ns | 15,313,012.5 ns | 15,793,423.4 ns | 65.77 | 0.94 | 0.06 | 4 | 406.2500 | 406.2500 | 406.2500 | 1,602,066 B |
List.OrderByF | 100000 | 16,092,447.1 ns | 103,614.54 ns | 91,851.59 ns | 24,548.37 ns | 16,100,175.0 ns | 15,913,290.6 ns | 16,045,238.3 ns | 16,150,824.2 ns | 16,243,343.8 ns | 62.14 | 0.99 | 0.07 | 5 | 93.7500 | 93.7500 | 93.7500 | 400,654 B |
List.Sort() | 100000 | 532,555.9 ns | 10,626.63 ns | 9,940.15 ns | 2,566.54 ns | 528,698.2 ns | 520,594.5 ns | 525,416.6 ns | 537,536.8 ns | 555,187.6 ns | 1,877.74 | 0.03 | 0.00 | 1 | - | - | - | - |
Bitwise Vs Modulo
Method | Count | Mean | Error | StdDev | StdErr | Median | Min | Q1 | Q3 | Max | Op/s | Ratio | RatioSD | Rank | Allocated |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
'Bitwise Modulo' | 100 | 31.33 ns | 0.416 ns | 0.683 ns | 0.115 ns | 31.10 ns | 30.64 ns | 30.84 ns | 31.72 ns | 34.02 ns | 31,913,382.1 | 1.00 | 0.03 | 1 | - |
'Normal Modulo' | 100 | 31.70 ns | 0.616 ns | 0.546 ns | 0.146 ns | 31.61 ns | 30.98 ns | 31.34 ns | 32.22 ns | 32.55 ns | 31,547,759.7 | 1.00 | 0.00 | 1 | - |
'Bitwise Modulo' | 1000 | 259.35 ns | 4.305 ns | 4.606 ns | 1.086 ns | 257.94 ns | 253.69 ns | 256.14 ns | 260.76 ns | 269.43 ns | 3,855,788.9 | 1.02 | 0.02 | 1 | - |
'Normal Modulo' | 1000 | 255.94 ns | 1.546 ns | 1.371 ns | 0.366 ns | 255.28 ns | 254.50 ns | 254.96 ns | 256.79 ns | 258.78 ns | 3,907,097.2 | 1.00 | 0.00 | 1 | - |
'Bitwise Modulo' | 10000 | 2,529.52 ns | 49.336 ns | 48.455 ns | 12.114 ns | 2,507.99 ns | 2,471.80 ns | 2,493.83 ns | 2,558.83 ns | 2,624.61 ns | 395,332.0 | 1.02 | 0.02 | 1 | - |
'Normal Modulo' | 10000 | 2,495.89 ns | 21.960 ns | 19.467 ns | 5.203 ns | 2,495.37 ns | 2,463.33 ns | 2,485.80 ns | 2,505.33 ns | 2,526.47 ns | 400,658.4 | 1.00 | 0.00 | 1 | - |
'Bitwise Modulo' | 100000 | 25,378.26 ns | 401.528 ns | 1,007.355 ns | 117.103 ns | 25,028.09 ns | 24,575.85 ns | 24,887.68 ns | 25,287.39 ns | 28,706.06 ns | 39,403.8 | 1.08 | 0.06 | 1 | - |
'Normal Modulo' | 100000 | 24,956.94 ns | 182.256 ns | 161.565 ns | 43.180 ns | 24,927.23 ns | 24,722.71 ns | 24,856.42 ns | 25,044.04 ns | 25,338.72 ns | 40,069.0 | 1.00 | 0.00 | 1 | - |
Bitwise Vs Normal Division
Method | Count | Mean | Error | StdDev | StdErr | Median | Min | Q1 | Q3 | Max | Op/s | Ratio | RatioSD | Rank | Allocated |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
'Bitwise Division' | 100 | 31.85 ns | 0.430 ns | 0.359 ns | 0.100 ns | 31.72 ns | 31.29 ns | 31.61 ns | 31.94 ns | 32.50 ns | 31,398,992.8 | 1.02 | 0.01 | 2 | - |
'Normal Division' | 100 | 31.10 ns | 0.451 ns | 0.422 ns | 0.109 ns | 30.96 ns | 30.40 ns | 30.88 ns | 31.47 ns | 31.99 ns | 32,158,874.3 | 1.00 | 0.00 | 1 | - |
'Bitwise Division' | 1000 | 246.57 ns | 2.769 ns | 2.313 ns | 0.641 ns | 246.11 ns | 243.73 ns | 244.68 ns | 248.61 ns | 250.84 ns | 4,055,603.3 | 0.88 | 0.01 | 1 | - |
'Normal Division' | 1000 | 255.61 ns | 4.655 ns | 13.130 ns | 1.369 ns | 249.42 ns | 244.06 ns | 246.80 ns | 256.33 ns | 298.89 ns | 3,912,183.0 | 1.00 | 0.00 | 1 | - |
'Bitwise Division' | 10000 | 2,421.29 ns | 25.140 ns | 22.286 ns | 5.956 ns | 2,414.35 ns | 2,393.16 ns | 2,405.75 ns | 2,437.27 ns | 2,460.38 ns | 413,002.9 | 0.99 | 0.02 | 1 | - |
'Normal Division' | 10000 | 2,443.02 ns | 34.577 ns | 30.651 ns | 8.192 ns | 2,438.19 ns | 2,387.69 ns | 2,428.31 ns | 2,457.02 ns | 2,501.11 ns | 409,329.6 | 1.00 | 0.00 | 1 | - |
'Bitwise Division' | 100000 | 23,978.63 ns | 223.192 ns | 186.376 ns | 51.691 ns | 23,949.79 ns | 23,666.10 ns | 23,822.82 ns | 24,113.10 ns | 24,308.56 ns | 41,703.8 | 0.99 | 0.02 | 1 | - |
'Normal Division' | 100000 | 24,180.50 ns | 348.030 ns | 325.547 ns | 84.056 ns | 24,172.35 ns | 23,775.94 ns | 23,897.75 ns | 24,382.83 ns | 24,921.06 ns | 41,355.6 | 1.00 | 0.00 | 1 | - |
Bitwise Vs Normal Multiplication
Method | Count | Mean | Error | StdDev | StdErr | Min | Q1 | Median | Q3 | Max | Op/s | Ratio | RatioSD | Rank | Allocated |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
'Bitwise Multiplication' | 100 | 31.60 ns | 0.656 ns | 0.730 ns | 0.167 ns | 30.77 ns | 30.94 ns | 31.50 ns | 32.19 ns | 32.88 ns | 31,645,322.2 | 1.01 | 0.03 | 1 | - |
'Normal Multiplication' | 100 | 30.93 ns | 0.359 ns | 0.318 ns | 0.085 ns | 30.38 ns | 30.71 ns | 30.92 ns | 31.06 ns | 31.51 ns | 32,334,462.0 | 1.00 | 0.00 | 1 | - |
'Bitwise Multiplication' | 1000 | 248.21 ns | 3.693 ns | 3.455 ns | 0.892 ns | 243.27 ns | 245.88 ns | 247.70 ns | 250.27 ns | 255.27 ns | 4,028,918.2 | 0.99 | 0.02 | 1 | - |
'Normal Multiplication' | 1000 | 251.44 ns | 3.182 ns | 2.484 ns | 0.717 ns | 246.38 ns | 250.08 ns | 251.59 ns | 253.06 ns | 255.28 ns | 3,977,113.8 | 1.00 | 0.00 | 1 | - |
'Bitwise Multiplication' | 10000 | 2,455.89 ns | 30.350 ns | 28.389 ns | 7.330 ns | 2,420.31 ns | 2,431.38 ns | 2,454.53 ns | 2,479.89 ns | 2,505.26 ns | 407,184.2 | 1.01 | 0.02 | 1 | - |
'Normal Multiplication' | 10000 | 2,435.82 ns | 31.330 ns | 29.307 ns | 7.567 ns | 2,392.38 ns | 2,411.36 ns | 2,429.13 ns | 2,463.03 ns | 2,478.20 ns | 410,539.8 | 1.00 | 0.00 | 1 | - |
'Bitwise Multiplication' | 100000 | 24,105.13 ns | 393.615 ns | 348.929 ns | 93.255 ns | 23,743.19 ns | 23,815.67 ns | 24,055.82 ns | 24,291.79 ns | 24,906.91 ns | 41,485.0 | 1.00 | 0.01 | 1 | - |
'Normal Multiplication' | 100000 | 24,137.89 ns | 285.225 ns | 266.799 ns | 68.887 ns | 23,738.70 ns | 23,928.76 ns | 24,047.06 ns | 24,379.82 ns | 24,506.15 ns | 41,428.6 | 1.00 | 0.00 | 1 | - |
Checked Vs Unchecked Math
Method | Count | Mean | Error | StdDev | StdErr | Min | Q1 | Median | Q3 | Max | Op/s | Ratio | RatioSD | Rank | Allocated |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
'Checked math' | 100 | 31.14 ns | 0.547 ns | 0.485 ns | 0.130 ns | 30.49 ns | 30.84 ns | 31.18 ns | 31.35 ns | 32.00 ns | 32,108,861.7 | 1.00 | 0.00 | 1 | - |
'Unchecked math' | 100 | 31.26 ns | 0.498 ns | 0.466 ns | 0.120 ns | 30.68 ns | 30.85 ns | 31.12 ns | 31.56 ns | 32.09 ns | 31,992,365.5 | 1.00 | 0.02 | 1 | - |
'Checked math' | 1000 | 250.12 ns | 3.615 ns | 3.382 ns | 0.873 ns | 244.49 ns | 247.34 ns | 249.21 ns | 253.30 ns | 255.06 ns | 3,998,052.7 | 1.00 | 0.00 | 1 | - |
'Unchecked math' | 1000 | 250.03 ns | 3.987 ns | 3.730 ns | 0.963 ns | 244.98 ns | 246.56 ns | 250.26 ns | 252.31 ns | 257.63 ns | 3,999,526.7 | 1.00 | 0.02 | 1 | - |
'Checked math' | 10000 | 2,421.88 ns | 27.134 ns | 25.381 ns | 6.553 ns | 2,382.54 ns | 2,402.51 ns | 2,421.47 ns | 2,440.53 ns | 2,466.80 ns | 412,902.3 | 1.00 | 0.00 | 1 | - |
'Unchecked math' | 10000 | 2,410.42 ns | 16.765 ns | 13.999 ns | 3.883 ns | 2,383.23 ns | 2,403.67 ns | 2,413.46 ns | 2,415.58 ns | 2,437.15 ns | 414,865.6 | 1.00 | 0.01 | 1 | - |
'Checked math' | 100000 | 24,070.51 ns | 220.235 ns | 206.008 ns | 53.191 ns | 23,795.42 ns | 23,909.99 ns | 24,019.20 ns | 24,254.79 ns | 24,433.31 ns | 41,544.6 | 1.00 | 0.00 | 1 | - |
'Unchecked math' | 100000 | 24,539.26 ns | 462.473 ns | 532.584 ns | 119.089 ns | 23,770.66 ns | 24,150.07 ns | 24,455.89 ns | 25,079.37 ns | 25,539.57 ns | 40,751.0 | 1.02 | 0.02 | 1 | - |
Class Vs Struct Access
Method | Count | Mean | Error | StdDev | StdErr | Min | Q1 | Median | Q3 | Max | Op/s | Ratio | RatioSD | Rank | Allocated |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
'Class test' | 100 | 31.44 ns | 0.623 ns | 0.583 ns | 0.151 ns | 30.64 ns | 31.01 ns | 31.38 ns | 31.88 ns | 32.45 ns | 31,805,703.9 | 1.00 | 0.00 | 1 | - |
'Struct test' | 100 | 31.22 ns | 0.525 ns | 0.491 ns | 0.127 ns | 30.68 ns | 30.89 ns | 31.05 ns | 31.46 ns | 32.12 ns | 32,027,557.1 | 0.99 | 0.02 | 1 | - |
'Class test' | 1000 | 245.60 ns | 2.923 ns | 2.441 ns | 0.677 ns | 243.52 ns | 243.94 ns | 244.96 ns | 246.08 ns | 251.37 ns | 4,071,646.8 | 1.00 | 0.00 | 1 | - |
'Struct test' | 1000 | 248.90 ns | 3.744 ns | 3.319 ns | 0.887 ns | 245.06 ns | 246.55 ns | 247.72 ns | 250.54 ns | 256.81 ns | 4,017,610.2 | 1.01 | 0.02 | 1 | - |
'Class test' | 10000 | 2,426.29 ns | 24.594 ns | 23.006 ns | 5.940 ns | 2,388.97 ns | 2,406.61 ns | 2,426.37 ns | 2,434.97 ns | 2,465.43 ns | 412,152.3 | 1.00 | 0.00 | 1 | - |
'Struct test' | 10000 | 2,465.69 ns | 33.790 ns | 31.608 ns | 8.161 ns | 2,400.71 ns | 2,440.91 ns | 2,466.26 ns | 2,487.32 ns | 2,511.12 ns | 405,565.8 | 1.02 | 0.02 | 1 | - |
'Class test' | 100000 | 24,130.44 ns | 276.078 ns | 258.244 ns | 66.678 ns | 23,785.59 ns | 23,947.62 ns | 24,067.41 ns | 24,233.63 ns | 24,654.35 ns | 41,441.4 | 1.00 | 0.00 | 1 | - |
'Struct test' | 100000 | 24,325.95 ns | 420.947 ns | 393.754 ns | 101.667 ns | 23,802.42 ns | 24,019.54 ns | 24,143.17 ns | 24,637.95 ns | 25,040.93 ns | 41,108.4 | 1.01 | 0.02 | 1 | - |
Class Vs Struct Creation
Method | Count | Mean | Error | StdDev | StdErr | Median | Min | Q1 | Q3 | Max | Op/s | Ratio | RatioSD | Rank | Gen 0 | Gen 1 | Gen 2 | Allocated |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
'Class test' | 100 | 447.01 ns | 8.900 ns | 8.741 ns | 2.185 ns | 445.31 ns | 436.74 ns | 440.87 ns | 452.37 ns | 465.93 ns | 2,237,069.8 | 1.00 | 0.00 | 2 | 0.5136 | 0.0057 | - | 3,224 B |
'Struct test' | 100 | 60.75 ns | 1.097 ns | 0.973 ns | 0.260 ns | 60.55 ns | 59.52 ns | 60.20 ns | 60.93 ns | 62.69 ns | 16,459,798.9 | 0.14 | 0.00 | 1 | 0.0675 | - | - | 424 B |
'Class test' | 1000 | 5,142.52 ns | 273.153 ns | 801.109 ns | 80.515 ns | 4,716.65 ns | 4,292.84 ns | 4,465.71 ns | 5,754.54 ns | 7,660.50 ns | 194,457.1 | 1.00 | 0.00 | 2 | 5.0964 | 0.5035 | - | 32,024 B |
'Struct test' | 1000 | 532.42 ns | 4.778 ns | 4.693 ns | 1.173 ns | 531.84 ns | 525.29 ns | 529.51 ns | 534.19 ns | 542.67 ns | 1,878,216.9 | 0.09 | 0.01 | 1 | 0.6409 | - | - | 4,024 B |
'Class test' | 10000 | 89,837.64 ns | 11,158.897 ns | 30,358.603 ns | 3,273.652 ns | 79,027.86 ns | 59,077.21 ns | 72,198.12 ns | 94,586.14 ns | 193,437.10 ns | 11,131.2 | 1.00 | 0.00 | 2 | 50.8423 | 16.9067 | - | 320,024 B |
'Struct test' | 10000 | 5,462.45 ns | 209.765 ns | 618.497 ns | 61.850 ns | 5,253.87 ns | 4,799.19 ns | 4,918.28 ns | 5,921.05 ns | 7,375.48 ns | 183,068.2 | 0.07 | 0.02 | 1 | 6.3248 | - | - | 40,024 B |
'Class test' | 100000 | 2,279,456.50 ns | 114,461.470 ns | 333,889.479 ns | 33,727.931 ns | 2,198,443.16 ns | 1,720,947.66 ns | 2,064,430.96 ns | 2,494,960.16 ns | 3,151,168.16 ns | 438.7 | 1.00 | 0.00 | 2 | 498.0469 | 248.0469 | 248.0469 | 3,200,024 B |
'Struct test' | 100000 | 153,246.75 ns | 1,748.649 ns | 1,550.132 ns | 414.290 ns | 153,064.27 ns | 150,707.57 ns | 152,094.36 ns | 154,586.94 ns | 155,568.26 ns | 6,525.4 | 0.08 | 0.00 | 1 | 124.7559 | 124.7559 | 124.7559 | 400,024 B |
Class Vs Struct Set
Method | Count | Mean | Error | StdDev | StdErr | Median | Min | Q1 | Q3 | Max | Op/s | Ratio | RatioSD | Rank | Allocated |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
'Class test' | 100 | 31.38 ns | 0.384 ns | 0.340 ns | 0.091 ns | 31.46 ns | 30.87 ns | 31.08 ns | 31.52 ns | 32.17 ns | 31,870,417.8 | 1.00 | 0.00 | 1 | - |
'Struct test' | 100 | 31.92 ns | 0.494 ns | 0.462 ns | 0.119 ns | 31.74 ns | 31.33 ns | 31.62 ns | 32.19 ns | 32.81 ns | 31,323,597.2 | 1.02 | 0.02 | 1 | - |
'Class test' | 1000 | 247.25 ns | 2.183 ns | 1.935 ns | 0.517 ns | 247.46 ns | 243.94 ns | 245.81 ns | 248.32 ns | 250.74 ns | 4,044,548.8 | 1.00 | 0.00 | 1 | - |
'Struct test' | 1000 | 249.41 ns | 2.587 ns | 2.293 ns | 0.613 ns | 248.82 ns | 246.32 ns | 247.69 ns | 251.02 ns | 254.51 ns | 4,009,529.4 | 1.01 | 0.01 | 1 | - |
'Class test' | 10000 | 2,570.51 ns | 66.154 ns | 189.809 ns | 19.474 ns | 2,472.14 ns | 2,391.45 ns | 2,432.19 ns | 2,705.71 ns | 3,084.04 ns | 389,027.6 | 1.00 | 0.00 | 2 | - |
'Struct test' | 10000 | 2,416.64 ns | 24.405 ns | 21.634 ns | 5.782 ns | 2,415.41 ns | 2,381.77 ns | 2,403.41 ns | 2,432.22 ns | 2,451.10 ns | 413,797.0 | 0.87 | 0.03 | 1 | - |
'Class test' | 100000 | 24,148.00 ns | 254.980 ns | 238.509 ns | 61.583 ns | 24,070.82 ns | 23,748.12 ns | 23,985.82 ns | 24,306.89 ns | 24,554.00 ns | 41,411.3 | 1.00 | 0.00 | 1 | - |
'Struct test' | 100000 | 24,763.72 ns | 404.030 ns | 778.428 ns | 114.773 ns | 24,488.54 ns | 23,884.75 ns | 24,262.01 ns | 24,956.55 ns | 27,304.55 ns | 40,381.7 | 1.05 | 0.05 | 1 | - |
Concurrent Dictionary Set Tests
Method | Mean | Error | StdDev | Ratio | RatioSD | Allocated |
---|---|---|---|---|---|---|
AddOrUpdate | 55.86 ns | 0.755 ns | 0.669 ns | 1.00 | 0.00 | - |
DoesContainKeyAssign | 52.09 ns | 0.853 ns | 0.798 ns | 0.93 | 0.02 | - |
DoesNotContainKey | 51.62 ns | 0.361 ns | 0.320 ns | 0.92 | 0.01 | - |
Concurrent Dictionary Tests
Method | Mean | Error | StdDev | Median | Ratio | RatioSD | Allocated |
---|---|---|---|---|---|---|---|
ContainsKey | 26.249 ns | 0.2027 ns | 0.1582 ns | 26.237 ns | 1.00 | 0.00 | - |
ContainsKeyIndex | 25.996 ns | 0.2111 ns | 0.1871 ns | 25.946 ns | 0.99 | 0.01 | - |
DoesNotContainsKey | 9.576 ns | 0.1973 ns | 0.2700 ns | 9.626 ns | 0.36 | 0.01 | - |
TryGetValue | 14.462 ns | 0.7659 ns | 2.2462 ns | 13.061 ns | 0.52 | 0.05 | - |
Dictionary Assignment
Method | Mean | Error | StdDev | StdErr | Min | Q1 | Median | Q3 | Max | Op/s | Ratio | RatioSD | Rank | Gen 0 | Allocated |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
AddOrAssign | 46.97 ns | 0.952 ns | 0.844 ns | 0.226 ns | 45.38 ns | 46.49 ns | 46.92 ns | 47.39 ns | 48.59 ns | 21,287,993.6 | 1.00 | 0.14 | 1 | 0.0344 | 216 B |
Key | 59.32 ns | 3.390 ns | 9.782 ns | 0.998 ns | 38.64 ns | 53.18 ns | 59.25 ns | 65.21 ns | 82.65 ns | 16,857,934.8 | 1.00 | 0.00 | 2 | 0.0344 | 216 B |
Dictionary Key Tests
Method | Mean | Error | StdDev | StdErr | Median | Min | Q1 | Q3 | Max | Op/s | Ratio | RatioSD | Rank | Gen 0 | Allocated |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Dictionary<int,string> | 67.48 ns | 2.669 ns | 7.787 ns | 0.787 ns | 67.52 ns | 50.67 ns | 62.62 ns | 71.92 ns | 86.59 ns | 14,818,373.6 | 0.75 | 0.10 | 4 | 0.0343 | 216 B |
Dictionary<long,string> | 49.16 ns | 0.950 ns | 1.478 ns | 0.261 ns | 48.77 ns | 47.25 ns | 47.91 ns | 50.26 ns | 52.18 ns | 20,342,174.7 | 0.54 | 0.08 | 2 | 0.0344 | 216 B |
Dictionary<short,string> | 66.38 ns | 3.927 ns | 11.579 ns | 1.158 ns | 66.64 ns | 48.03 ns | 57.31 ns | 73.65 ns | 96.14 ns | 15,064,876.2 | 0.75 | 0.18 | 4 | 0.0344 | 216 B |
'Dictionary<int,string> Using string key HashCode' | 84.56 ns | 6.319 ns | 18.333 ns | 1.861 ns | 87.69 ns | 62.43 ns | 66.02 ns | 95.94 ns | 130.65 ns | 11,825,596.2 | 0.93 | 0.16 | 5 | 0.0343 | 216 B |
'Dictionary<string,string> key interned' | 305.04 ns | 1.790 ns | 1.587 ns | 0.424 ns | 304.89 ns | 302.58 ns | 304.44 ns | 306.26 ns | 307.89 ns | 3,278,220.4 | 3.78 | 0.19 | 7 | 0.0343 | 216 B |
Dictionary<string,string> | 90.45 ns | 3.712 ns | 10.946 ns | 1.095 ns | 89.83 ns | 74.67 ns | 79.97 ns | 99.36 ns | 118.62 ns | 11,055,511.0 | 1.00 | 0.00 | 6 | 0.0343 | 216 B |
Dictionary<uint,string> | 47.92 ns | 0.952 ns | 0.891 ns | 0.230 ns | 47.84 ns | 46.80 ns | 47.13 ns | 48.69 ns | 49.30 ns | 20,869,045.9 | 0.59 | 0.04 | 2 | 0.0344 | 216 B |
Dictionary<ulong,string> | 46.79 ns | 0.659 ns | 0.616 ns | 0.159 ns | 46.72 ns | 45.88 ns | 46.40 ns | 47.17 ns | 48.20 ns | 21,370,940.3 | 0.57 | 0.04 | 1 | 0.0344 | 216 B |
Dictionary<ushort,string> | 54.40 ns | 2.549 ns | 7.396 ns | 0.751 ns | 50.70 ns | 47.29 ns | 49.08 ns | 59.16 ns | 76.72 ns | 18,382,376.3 | 0.61 | 0.11 | 3 | 0.0344 | 216 B |
Dictionary Vs Concurrent Dictionary
Method | Mean | Error | StdDev | StdErr | Median | Min | Q1 | Q3 | Max | Op/s | Ratio | RatioSD | Rank | Gen 0 | Allocated |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ConcurrentDictionary<string,string> | 308.49 ns | 26.365 ns | 76.907 ns | 7.769 ns | 284.45 ns | 228.63 ns | 243.19 ns | 345.80 ns | 501.62 ns | 3,241,570.8 | 4.01 | 0.22 | 2 | 0.1388 | 872 B |
Dictionary<string,string> | 82.86 ns | 1.497 ns | 1.169 ns | 0.337 ns | 82.93 ns | 80.43 ns | 82.42 ns | 83.75 ns | 84.49 ns | 12,068,811.7 | 1.00 | 0.00 | 1 | 0.0343 | 216 B |
Dynamic Tests
Method | Count | Mean | Error | StdDev | StdErr | Median | Min | Q1 | Q3 | Max | Op/s | Ratio | RatioSD | Rank | Gen 0 | Allocated |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
'Dynamic value' | 100 | 877.08 ns | 50.269 ns | 148.218 ns | 14.822 ns | 902.51 ns | 661.40 ns | 736.56 ns | 988.65 ns | 1,218.49 ns | 1,140,142.5 | 1.00 | 0.00 | 3 | 0.0038 | 24 B |
'Dynamic with casting' | 100 | 569.04 ns | 11.256 ns | 12.044 ns | 2.839 ns | 568.40 ns | 555.86 ns | 559.96 ns | 573.38 ns | 601.25 ns | 1,757,331.6 | 0.55 | 0.04 | 2 | 0.0038 | 24 B |
'Static typing' | 100 | 32.50 ns | 0.272 ns | 0.213 ns | 0.061 ns | 32.55 ns | 32.04 ns | 32.45 ns | 32.67 ns | 32.72 ns | 30,764,559.7 | 0.03 | 0.00 | 1 | - | - |
'Dynamic value' | 1000 | 7,588.35 ns | 424.096 ns | 1,250.458 ns | 125.046 ns | 6,782.50 ns | 6,480.01 ns | 6,582.24 ns | 8,846.62 ns | 11,377.59 ns | 131,781.0 | 1.00 | 0.00 | 3 | - | 24 B |
'Dynamic with casting' | 1000 | 6,479.22 ns | 362.563 ns | 1,069.024 ns | 106.902 ns | 5,781.48 ns | 5,451.43 ns | 5,543.96 ns | 7,504.15 ns | 8,727.25 ns | 154,339.5 | 0.86 | 0.10 | 2 | - | 24 B |
'Static typing' | 1000 | 263.11 ns | 4.308 ns | 3.819 ns | 1.021 ns | 262.70 ns | 255.91 ns | 261.23 ns | 264.98 ns | 269.85 ns | 3,800,675.8 | 0.03 | 0.00 | 1 | - | - |
'Dynamic value' | 10000 | 86,950.63 ns | 5,224.265 ns | 15,156.541 ns | 1,538.914 ns | 87,497.24 ns | 64,086.21 ns | 76,272.73 ns | 94,619.43 ns | 123,385.88 ns | 11,500.8 | 1.00 | 0.00 | 3 | - | 24 B |
'Dynamic with casting' | 10000 | 53,913.06 ns | 422.004 ns | 374.096 ns | 99.981 ns | 53,817.08 ns | 53,501.37 ns | 53,693.48 ns | 54,125.48 ns | 54,834.87 ns | 18,548.4 | 0.71 | 0.12 | 2 | - | 24 B |
'Static typing' | 10000 | 2,503.75 ns | 42.053 ns | 41.301 ns | 10.325 ns | 2,497.86 ns | 2,461.18 ns | 2,472.05 ns | 2,511.34 ns | 2,591.25 ns | 399,400.6 | 0.03 | 0.01 | 1 | - | - |
'Dynamic value' | 100000 | 755,516.47 ns | 26,160.715 ns | 75,896.978 ns | 7,706.171 ns | 774,122.85 ns | 633,500.78 ns | 680,984.77 ns | 801,412.11 ns | 934,830.76 ns | 1,323.6 | 1.00 | 0.00 | 3 | - | 24 B |
'Dynamic with casting' | 100000 | 536,680.48 ns | 4,012.300 ns | 3,556.799 ns | 950.595 ns | 535,851.37 ns | 532,473.24 ns | 533,994.97 ns | 538,449.71 ns | 544,076.86 ns | 1,863.3 | 0.79 | 0.08 | 2 | - | 25 B |
'Static typing' | 100000 | 24,670.00 ns | 215.351 ns | 201.439 ns | 52.011 ns | 24,653.03 ns | 24,302.55 ns | 24,533.32 ns | 24,817.84 ns | 24,986.61 ns | 40,535.1 | 0.04 | 0.00 | 1 | - | - |
Dynamo Tests
Method | Count | Mean | Error | StdDev | Median | Ratio | RatioSD | Rank | Gen 0 | Gen 1 | Gen 2 | Allocated |
---|---|---|---|---|---|---|---|---|---|---|---|---|
AnnonymousTest | 1 | 14.10 ns | 0.360 ns | 1.021 ns | 13.85 ns | 1.02 | 0.10 | 1 | 0.0089 | - | - | 56 B |
ClassTest | 1 | 13.89 ns | 0.385 ns | 1.087 ns | 13.62 ns | 1.00 | 0.00 | 1 | 0.0089 | - | - | 56 B |
ConcurrentDictionaryConversionTest | 1 | 164.44 ns | 3.373 ns | 5.818 ns | 163.15 ns | 12.14 | 1.01 | 3 | 0.1440 | 0.0007 | - | 904 B |
DynamoAnonymousConversionTest | 1 | 355.11 ns | 10.561 ns | 30.639 ns | 356.11 ns | 25.64 | 2.77 | 6 | 0.0482 | - | - | 304 B |
DynamoConversionTest | 1 | 348.67 ns | 22.593 ns | 66.260 ns | 349.87 ns | 25.04 | 5.32 | 6 | 0.0482 | - | - | 304 B |
DynamoExpandoConversionTest | 1 | 258.71 ns | 15.081 ns | 44.230 ns | 261.49 ns | 19.01 | 3.75 | 5 | 0.0520 | - | - | 328 B |
DynamoTest | 1 | 158.68 ns | 2.681 ns | 2.377 ns | 159.20 ns | 11.62 | 0.84 | 2 | 0.0458 | - | - | 288 B |
ExpandoTest | 1 | 197.70 ns | 9.182 ns | 26.345 ns | 195.18 ns | 14.38 | 2.16 | 4 | 0.0370 | - | - | 232 B |
AnnonymousTest | 10 | 72.29 ns | 0.544 ns | 0.483 ns | 72.27 ns | 1.11 | 0.01 | 2 | 0.0548 | 0.0001 | - | 344 B |
ClassTest | 10 | 65.19 ns | 0.582 ns | 0.486 ns | 65.33 ns | 1.00 | 0.00 | 1 | 0.0548 | 0.0001 | - | 344 B |
ConcurrentDictionaryConversionTest | 10 | 1,686.56 ns | 16.096 ns | 14.268 ns | 1,684.78 ns | 25.87 | 0.34 | 4 | 1.4038 | 0.0839 | - | 8,824 B |
DynamoAnonymousConversionTest | 10 | 3,316.91 ns | 191.865 ns | 531.658 ns | 3,328.66 ns | 53.28 | 3.91 | 6 | 0.4501 | 0.0076 | - | 2,824 B |
DynamoConversionTest | 10 | 2,632.49 ns | 39.118 ns | 34.678 ns | 2,623.16 ns | 40.32 | 0.66 | 5 | 0.4501 | 0.0076 | - | 2,824 B |
DynamoExpandoConversionTest | 10 | 2,603.06 ns | 120.591 ns | 351.770 ns | 2,644.84 ns | 43.05 | 1.92 | 5 | 0.4883 | 0.0076 | - | 3,064 B |
DynamoTest | 10 | 1,541.76 ns | 25.794 ns | 37.808 ns | 1,526.64 ns | 23.61 | 0.68 | 3 | 0.4234 | 0.0057 | - | 2,664 B |
ExpandoTest | 10 | 1,775.89 ns | 76.786 ns | 225.199 ns | 1,790.17 ns | 31.18 | 3.49 | 4 | 0.3338 | 0.0038 | - | 2,104 B |
AnnonymousTest | 100 | 605.09 ns | 10.791 ns | 21.300 ns | 601.31 ns | 1.10 | 0.04 | 2 | 0.5131 | 0.0114 | - | 3,224 B |
ClassTest | 100 | 574.27 ns | 5.159 ns | 4.573 ns | 574.15 ns | 1.00 | 0.00 | 1 | 0.5131 | 0.0114 | - | 3,224 B |
ConcurrentDictionaryConversionTest | 100 | 17,551.00 ns | 347.005 ns | 371.291 ns | 17,542.41 ns | 30.72 | 0.68 | 4 | 14.0076 | 4.6387 | - | 88,024 B |
DynamoAnonymousConversionTest | 100 | 33,530.56 ns | 1,072.940 ns | 3,078.466 ns | 33,133.80 ns | 51.86 | 7.51 | 7 | 4.4556 | 0.6104 | - | 28,024 B |
DynamoConversionTest | 100 | 26,146.21 ns | 483.276 ns | 428.412 ns | 26,176.10 ns | 45.53 | 0.75 | 6 | 4.4556 | 0.6104 | - | 28,024 B |
DynamoExpandoConversionTest | 100 | 20,406.49 ns | 384.280 ns | 359.456 ns | 20,208.87 ns | 35.58 | 0.84 | 5 | 4.8218 | 0.6714 | - | 30,424 B |
DynamoTest | 100 | 18,759.62 ns | 1,132.989 ns | 3,340.644 ns | 18,790.80 ns | 27.09 | 2.46 | 4 | 4.2114 | 0.5798 | - | 26,424 B |
ExpandoTest | 100 | 14,574.47 ns | 225.528 ns | 231.601 ns | 14,548.93 ns | 25.33 | 0.40 | 3 | 3.3112 | 0.4120 | - | 20,824 B |
AnnonymousTest | 1000 | 7,111.92 ns | 284.431 ns | 834.187 ns | 6,641.82 ns | 1.16 | 0.12 | 2 | 5.0964 | 0.8469 | - | 32,024 B |
ClassTest | 1000 | 6,169.14 ns | 176.351 ns | 491.595 ns | 5,945.26 ns | 1.00 | 0.00 | 1 | 5.0964 | 0.8469 | - | 32,024 B |
ConcurrentDictionaryConversionTest | 1000 | 322,879.36 ns | 2,914.804 ns | 2,583.898 ns | 321,833.62 ns | 51.56 | 4.66 | 6 | 140.1367 | 69.8242 | - | 880,024 B |
DynamoAnonymousConversionTest | 1000 | 261,024.48 ns | 3,536.732 ns | 3,135.221 ns | 259,904.88 ns | 41.67 | 3.65 | 5 | 44.4336 | 17.5781 | - | 280,025 B |
DynamoConversionTest | 1000 | 259,369.69 ns | 2,550.268 ns | 2,260.746 ns | 259,152.47 ns | 41.41 | 3.70 | 5 | 44.4336 | 17.5781 | - | 280,025 B |
DynamoExpandoConversionTest | 1000 | 214,635.77 ns | 4,186.073 ns | 3,915.655 ns | 215,303.08 ns | 34.02 | 3.43 | 4 | 48.3398 | 22.4609 | - | 304,024 B |
DynamoTest | 1000 | 158,912.33 ns | 1,406.588 ns | 1,174.565 ns | 158,690.55 ns | 25.63 | 2.28 | 3 | 41.9922 | 20.2637 | - | 264,025 B |
ExpandoTest | 1000 | 179,256.24 ns | 9,554.429 ns | 27,104.325 ns | 167,395.51 ns | 28.69 | 3.14 | 3 | 32.9590 | 10.9863 | - | 208,024 B |
AnnonymousTest | 10000 | 116,914.95 ns | 7,136.561 ns | 21,042.313 ns | 114,204.88 ns | 1.55 | 0.08 | 2 | 50.7813 | 25.3906 | - | 320,024 B |
ClassTest | 10000 | 81,488.43 ns | 1,222.357 ns | 1,143.393 ns | 81,191.04 ns | 1.00 | 0.00 | 1 | 50.7813 | 25.3906 | - | 320,024 B |
ConcurrentDictionaryConversionTest | 10000 | 13,037,652.58 ns | 257,695.664 ns | 296,762.710 ns | 13,121,786.72 ns | 159.60 | 4.81 | 8 | 1609.3750 | 703.1250 | 265.6250 | 8,800,026 B |
DynamoAnonymousConversionTest | 10000 | 3,661,782.37 ns | 59,113.502 ns | 52,402.580 ns | 3,643,004.30 ns | 44.98 | 0.85 | 6 | 445.3125 | 222.6563 | - | 2,800,033 B |
DynamoConversionTest | 10000 | 3,746,548.16 ns | 67,990.820 ns | 69,821.566 ns | 3,759,405.47 ns | 46.05 | 1.23 | 7 | 445.3125 | 222.6563 | - | 2,800,033 B |
DynamoExpandoConversionTest | 10000 | 3,467,463.52 ns | 126,720.894 ns | 369,650.796 ns | 3,264,697.07 ns | 49.48 | 3.55 | 5 | 484.3750 | 242.1875 | - | 3,040,024 B |
DynamoTest | 10000 | 2,504,872.01 ns | 30,818.472 ns | 27,319.773 ns | 2,498,462.89 ns | 30.77 | 0.51 | 4 | 417.9688 | 207.0313 | - | 2,640,033 B |
ExpandoTest | 10000 | 2,021,588.86 ns | 38,715.368 ns | 43,032.029 ns | 2,023,287.50 ns | 24.80 | 0.68 | 3 | 328.1250 | 164.0625 | - | 2,080,024 B |
Enum Vs Byte Packing
Method | Mean | Error | StdDev | StdErr | Median | Min | Q1 | Q3 | Max | Op/s | Ratio | RatioSD | Rank | Gen 0 | Allocated |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Byte | 2.354 ns | 0.0768 ns | 0.0681 ns | 0.0182 ns | 2.355 ns | 2.248 ns | 2.308 ns | 2.395 ns | 2.521 ns | 424,765,473.3 | 0.48 | 0.02 | 1 | 0.0051 | 32 B |
Enum | 4.954 ns | 0.1078 ns | 0.1059 ns | 0.0265 ns | 4.981 ns | 4.758 ns | 4.893 ns | 5.015 ns | 5.106 ns | 201,837,027.8 | 1.00 | 0.00 | 2 | 0.0089 | 56 B |
UInt | 5.005 ns | 0.2871 ns | 0.8421 ns | 0.0846 ns | 4.669 ns | 4.149 ns | 4.356 ns | 5.662 ns | 7.244 ns | 199,805,587.1 | 1.28 | 0.11 | 2 | 0.0089 | 56 B |
Field Vs Property Tests
Method | Count | Mean | Error | StdDev | StdErr | Median | Min | Q1 | Q3 | Max | Op/s | Ratio | RatioSD | Rank | Allocated |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
'Field test' | 100 | 34.76 ns | 1.230 ns | 3.608 ns | 0.363 ns | 33.54 ns | 30.99 ns | 31.46 ns | 36.80 ns | 44.56 ns | 28,771,684.7 | 1.16 | 0.05 | 1 | - |
'Local test' | 100 | 32.55 ns | 0.304 ns | 0.270 ns | 0.072 ns | 32.46 ns | 32.20 ns | 32.35 ns | 32.71 ns | 33.15 ns | 30,725,451.9 | 1.00 | 0.02 | 1 | - |
'Property test' | 100 | 32.41 ns | 0.619 ns | 0.549 ns | 0.147 ns | 32.21 ns | 31.71 ns | 32.06 ns | 32.67 ns | 33.65 ns | 30,855,906.6 | 1.00 | 0.00 | 1 | - |
'Field test' | 1000 | 255.89 ns | 1.370 ns | 1.144 ns | 0.317 ns | 255.69 ns | 254.24 ns | 255.58 ns | 256.13 ns | 258.66 ns | 3,907,927.8 | 0.99 | 0.00 | 1 | - |
'Local test' | 1000 | 258.15 ns | 2.368 ns | 2.215 ns | 0.572 ns | 257.28 ns | 254.62 ns | 256.80 ns | 260.53 ns | 261.16 ns | 3,873,723.0 | 1.00 | 0.01 | 1 | - |
'Property test' | 1000 | 257.31 ns | 1.550 ns | 1.210 ns | 0.349 ns | 257.58 ns | 254.81 ns | 256.98 ns | 258.31 ns | 258.66 ns | 3,886,422.7 | 1.00 | 0.00 | 1 | - |
'Field test' | 10000 | 2,681.42 ns | 84.901 ns | 247.660 ns | 25.017 ns | 2,537.49 ns | 2,475.38 ns | 2,504.61 ns | 2,888.25 ns | 3,336.60 ns | 372,937.1 | 1.20 | 0.06 | 1 | - |
'Local test' | 10000 | 2,543.11 ns | 49.573 ns | 46.371 ns | 11.973 ns | 2,530.48 ns | 2,495.92 ns | 2,504.93 ns | 2,572.92 ns | 2,630.95 ns | 393,219.6 | 1.01 | 0.02 | 1 | - |
'Property test' | 10000 | 2,521.48 ns | 11.477 ns | 10.735 ns | 2.772 ns | 2,521.31 ns | 2,493.69 ns | 2,517.45 ns | 2,528.24 ns | 2,537.86 ns | 396,592.7 | 1.00 | 0.00 | 1 | - |
'Field test' | 100000 | 26,994.67 ns | 776.838 ns | 2,241.354 ns | 228.757 ns | 26,027.60 ns | 24,888.33 ns | 25,473.48 ns | 28,765.40 ns | 33,842.31 ns | 37,044.4 | 0.88 | 0.09 | 1 | - |
'Local test' | 100000 | 33,136.43 ns | 886.114 ns | 2,528.132 ns | 260.757 ns | 32,770.84 ns | 28,487.84 ns | 31,291.90 ns | 34,762.79 ns | 40,488.69 ns | 30,178.3 | 1.08 | 0.08 | 3 | - |
'Property test' | 100000 | 31,208.59 ns | 620.956 ns | 1,534.850 ns | 180.884 ns | 30,618.19 ns | 28,835.71 ns | 30,118.02 ns | 31,921.12 ns | 34,848.88 ns | 32,042.5 | 1.00 | 0.00 | 2 | - |
Hash Table Vs Dictionary
Method | Mean | Error | StdDev | StdErr | Median | Min | Q1 | Q3 | Max | Op/s | Ratio | RatioSD | Rank | Gen 0 | Allocated |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Dictionary<int,string> | 34.76 ns | 0.695 ns | 0.744 ns | 0.175 ns | 34.70 ns | 33.47 ns | 34.27 ns | 35.26 ns | 36.22 ns | 28,768,185.0 | 0.63 | 0.03 | 1 | 0.0344 | 216 B |
Dictionary<string,string> | 54.32 ns | 1.104 ns | 1.844 ns | 0.307 ns | 54.08 ns | 51.70 ns | 52.90 ns | 55.37 ns | 58.72 ns | 18,408,432.4 | 1.00 | 0.00 | 2 | 0.0343 | 216 B |
'Hashtable (int,string)' | 55.84 ns | 2.008 ns | 5.889 ns | 0.592 ns | 56.38 ns | 48.57 ns | 50.06 ns | 59.81 ns | 72.13 ns | 17,908,300.9 | 1.12 | 0.07 | 2 | 0.0344 | 216 B |
'Hashtable (string,string)' | 56.30 ns | 3.156 ns | 9.307 ns | 0.931 ns | 57.15 ns | 45.87 ns | 46.97 ns | 62.40 ns | 85.50 ns | 17,761,621.5 | 1.20 | 0.13 | 2 | 0.0268 | 168 B |
StringDictionary | 116.01 ns | 6.278 ns | 18.510 ns | 1.851 ns | 107.23 ns | 95.11 ns | 99.25 ns | 131.71 ns | 168.59 ns | 8,620,151.0 | 2.52 | 0.18 | 3 | 0.0408 | 256 B |
IEnumerable Conversion
Method | Count | Mean | Error | StdDev | StdErr | Median | Min | Q1 | Q3 | Max | Op/s | Ratio | RatioSD | Rank | Gen 0 | Gen 1 | Gen 2 | Allocated |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Array | 100 | 1,690.3 ns | 83.16 ns | 234.56 ns | 24.45 ns | 1,602.6 ns | 1,456.6 ns | 1,511.8 ns | 1,780.7 ns | 2,415.9 ns | 591,623.7 | 2.12 | 0.21 | 7 | 0.2785 | - | - | 1,768 B |
'Array Copy' | 100 | 604.4 ns | 29.21 ns | 86.13 ns | 8.61 ns | 551.8 ns | 514.8 ns | 529.5 ns | 695.7 ns | 793.9 ns | 1,654,570.7 | 0.75 | 0.04 | 2 | 0.2251 | - | - | 1,416 B |
'Array for loop' | 100 | 788.5 ns | 15.72 ns | 31.02 ns | 4.48 ns | 786.5 ns | 743.1 ns | 761.0 ns | 809.4 ns | 864.1 ns | 1,268,168.2 | 0.84 | 0.04 | 4 | 0.2518 | - | - | 1,584 B |
IEnumerable | 100 | 936.3 ns | 14.60 ns | 14.34 ns | 3.59 ns | 934.1 ns | 910.1 ns | 926.8 ns | 945.1 ns | 965.6 ns | 1,068,087.2 | 1.00 | 0.00 | 5 | 0.1316 | - | - | 832 B |
List | 100 | 1,430.4 ns | 69.78 ns | 205.74 ns | 20.57 ns | 1,511.2 ns | 1,176.9 ns | 1,203.3 ns | 1,585.5 ns | 1,957.6 ns | 699,099.1 | 1.75 | 0.11 | 6 | 0.3204 | - | - | 2,016 B |
'List CopyTo' | 100 | 558.1 ns | 31.96 ns | 94.23 ns | 9.42 ns | 501.3 ns | 466.1 ns | 476.2 ns | 645.6 ns | 795.9 ns | 1,791,751.0 | 0.59 | 0.10 | 1 | 0.2651 | - | - | 1,664 B |
'List for loop' | 100 | 720.7 ns | 46.67 ns | 136.88 ns | 13.76 ns | 721.4 ns | 556.6 ns | 593.8 ns | 823.4 ns | 1,052.1 ns | 1,387,463.7 | 0.83 | 0.13 | 3 | 0.2918 | - | - | 1,832 B |
Array | 1000 | 8,280.9 ns | 116.80 ns | 103.54 ns | 27.67 ns | 8,266.7 ns | 8,141.1 ns | 8,197.6 ns | 8,325.5 ns | 8,486.2 ns | 120,759.6 | 1.39 | 0.15 | 5 | 1.8921 | 0.0153 | - | 11,888 B |
'Array Copy' | 1000 | 3,503.1 ns | 68.78 ns | 64.34 ns | 16.61 ns | 3,484.8 ns | 3,439.2 ns | 3,449.2 ns | 3,551.5 ns | 3,661.4 ns | 285,458.6 | 0.58 | 0.08 | 1 | 1.8272 | 0.0153 | - | 11,480 B |
'Array for loop' | 1000 | 4,033.1 ns | 62.83 ns | 55.70 ns | 14.89 ns | 4,019.9 ns | 3,969.3 ns | 4,001.0 ns | 4,061.7 ns | 4,149.7 ns | 247,950.6 | 0.68 | 0.08 | 2 | 1.8616 | 0.0153 | - | 11,704 B |
IEnumerable | 1000 | 6,441.4 ns | 363.20 ns | 1,070.90 ns | 107.09 ns | 5,833.2 ns | 5,340.0 ns | 5,613.8 ns | 7,242.5 ns | 9,074.2 ns | 155,246.6 | 1.00 | 0.00 | 4 | 0.7095 | - | - | 4,488 B |
List | 1000 | 8,945.6 ns | 172.11 ns | 184.15 ns | 43.41 ns | 8,890.2 ns | 8,708.7 ns | 8,800.3 ns | 9,087.6 ns | 9,305.9 ns | 111,786.5 | 1.41 | 0.24 | 6 | 2.0447 | 0.0153 | - | 12,912 B |
'List CopyTo' | 1000 | 4,313.8 ns | 80.13 ns | 106.97 ns | 21.39 ns | 4,302.0 ns | 4,142.9 ns | 4,246.5 ns | 4,395.4 ns | 4,532.2 ns | 231,813.7 | 0.63 | 0.13 | 3 | 1.9913 | 0.0267 | - | 12,504 B |
'List for loop' | 1000 | 4,365.5 ns | 72.78 ns | 117.53 ns | 20.16 ns | 4,327.6 ns | 4,235.4 ns | 4,289.7 ns | 4,400.3 ns | 4,684.0 ns | 229,067.0 | 0.62 | 0.12 | 3 | 2.0218 | 0.0305 | - | 12,728 B |
Array | 10000 | 79,485.7 ns | 845.31 ns | 790.70 ns | 204.16 ns | 79,203.0 ns | 78,616.5 ns | 78,884.4 ns | 80,008.7 ns | 81,318.0 ns | 12,580.9 | 1.47 | 0.03 | 6 | 20.5078 | 1.9531 | - | 129,416 B |
'Array Copy' | 10000 | 31,167.0 ns | 447.38 ns | 396.59 ns | 105.99 ns | 31,234.5 ns | 30,351.8 ns | 30,872.2 ns | 31,402.0 ns | 31,881.7 ns | 32,085.3 | 0.57 | 0.01 | 2 | 16.4185 | 1.3428 | - | 103,472 B |
'Array for loop' | 10000 | 41,787.6 ns | 1,652.43 ns | 4,846.28 ns | 487.07 ns | 39,203.4 ns | 37,640.4 ns | 38,157.9 ns | 46,147.7 ns | 54,862.7 ns | 23,930.5 | 0.80 | 0.10 | 3 | 20.5078 | 2.2583 | - | 129,232 B |
IEnumerable | 10000 | 54,241.4 ns | 1,000.57 ns | 935.94 ns | 241.66 ns | 53,773.3 ns | 53,066.1 ns | 53,543.1 ns | 54,851.8 ns | 56,347.2 ns | 18,436.1 | 1.00 | 0.00 | 5 | 10.4370 | 1.2817 | - | 66,024 B |
List | 10000 | 88,270.6 ns | 3,274.05 ns | 9,446.37 ns | 964.12 ns | 83,533.6 ns | 80,660.2 ns | 81,805.0 ns | 91,047.5 ns | 113,851.8 ns | 11,328.8 | 1.55 | 0.13 | 7 | 20.8740 | 2.5635 | - | 131,864 B |
'List CopyTo' | 10000 | 30,190.5 ns | 359.11 ns | 299.87 ns | 83.17 ns | 30,193.9 ns | 29,787.1 ns | 29,955.9 ns | 30,427.4 ns | 30,732.9 ns | 33,123.0 | 0.56 | 0.01 | 1 | 16.7847 | 2.0752 | - | 105,920 B |
'List for loop' | 10000 | 43,034.9 ns | 1,705.39 ns | 5,028.37 ns | 502.84 ns | 40,686.0 ns | 38,076.5 ns | 39,319.3 ns | 47,165.1 ns | 57,846.7 ns | 23,236.9 | 0.89 | 0.10 | 4 | 20.9351 | 3.4790 | - | 131,680 B |
Array | 100000 | 965,729.2 ns | 18,623.40 ns | 20,699.86 ns | 4,748.87 ns | 960,648.8 ns | 934,459.6 ns | 952,481.4 ns | 977,953.7 ns | 1,006,883.8 ns | 1,035.5 | 1.23 | 0.08 | 6 | 298.8281 | 298.8281 | 298.8281 | 1,225,568 B |
'Array Copy' | 100000 | 452,540.5 ns | 14,378.21 ns | 41,941.91 ns | 4,236.77 ns | 431,112.0 ns | 416,530.0 ns | 426,025.8 ns | 467,278.0 ns | 556,253.4 ns | 2,209.7 | 0.66 | 0.05 | 1 | 299.8047 | 299.8047 | 299.8047 | 1,100,800 B |
'Array for loop' | 100000 | 505,668.1 ns | 7,568.31 ns | 7,079.40 ns | 1,827.89 ns | 504,960.3 ns | 495,949.2 ns | 500,123.4 ns | 508,026.2 ns | 518,372.9 ns | 1,977.6 | 0.64 | 0.04 | 3 | 299.8047 | 299.8047 | 299.8047 | 1,225,384 B |
IEnumerable | 100000 | 690,524.8 ns | 26,817.87 ns | 79,073.10 ns | 7,907.31 ns | 656,108.7 ns | 605,796.3 ns | 623,662.7 ns | 750,376.7 ns | 927,361.2 ns | 1,448.2 | 1.00 | 0.00 | 5 | 124.0234 | 124.0234 | 124.0234 | 524,848 B |
List | 100000 | 1,049,636.6 ns | 20,207.57 ns | 26,976.53 ns | 5,395.31 ns | 1,047,216.0 ns | 1,011,385.5 ns | 1,026,488.3 ns | 1,066,040.2 ns | 1,109,960.9 ns | 952.7 | 1.34 | 0.07 | 7 | 398.4375 | 398.4375 | 398.4375 | 1,573,824 B |
'List CopyTo' | 100000 | 453,988.7 ns | 20,837.31 ns | 61,439.28 ns | 6,143.93 ns | 420,574.7 ns | 401,410.0 ns | 408,675.7 ns | 501,326.0 ns | 627,540.3 ns | 2,202.7 | 0.66 | 0.07 | 2 | 389.1602 | 389.1602 | 389.1602 | 1,449,072 B |
'List for loop' | 100000 | 605,808.5 ns | 27,083.82 ns | 79,004.78 ns | 7,980.69 ns | 600,767.8 ns | 479,177.8 ns | 546,176.1 ns | 646,794.2 ns | 800,673.5 ns | 1,650.7 | 0.88 | 0.11 | 4 | 387.6953 | 387.6953 | 387.6953 | 1,573,635 B |
IEnumerable Tests
Method | Count | Mean | Error | StdDev | StdErr | Median | Min | Q1 | Q3 | Max | Op/s | Ratio | RatioSD | Rank | Gen 0 | Gen 1 | Gen 2 | Allocated |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
'ArrayList test' | 100 | 505.33 ns | 7.388 ns | 6.911 ns | 1.784 ns | 503.84 ns | 496.32 ns | 500.53 ns | 508.86 ns | 521.18 ns | 1,978,905.9 | 2.56 | 0.32 | 5 | 0.0076 | - | - | 48 B |
'Array test' | 100 | 32.00 ns | 0.439 ns | 0.411 ns | 0.106 ns | 31.86 ns | 31.43 ns | 31.69 ns | 32.30 ns | 32.71 ns | 31,247,541.6 | 0.16 | 0.02 | 1 | - | - | - | - |
'ConcurrentBag test' | 100 | 463.95 ns | 3.536 ns | 3.307 ns | 0.854 ns | 463.65 ns | 458.30 ns | 462.30 ns | 467.10 ns | 468.97 ns | 2,155,402.2 | 2.35 | 0.28 | 4 | 0.0725 | - | - | 456 B |
'HashSet test' | 100 | 203.08 ns | 3.552 ns | 3.323 ns | 0.858 ns | 202.83 ns | 198.94 ns | 200.24 ns | 205.39 ns | 208.98 ns | 4,924,120.5 | 1.03 | 0.13 | 3 | - | - | - | - |
'List test' | 100 | 194.00 ns | 6.916 ns | 19.619 ns | 2.034 ns | 183.43 ns | 172.75 ns | 179.80 ns | 206.26 ns | 252.77 ns | 5,154,602.2 | 1.00 | 0.00 | 2 | - | - | - | - |
'ArrayList test' | 1000 | 6,077.77 ns | 178.494 ns | 500.515 ns | 52.468 ns | 5,972.13 ns | 5,460.86 ns | 5,700.25 ns | 6,269.21 ns | 7,562.61 ns | 164,534.0 | 3.42 | 0.27 | 5 | 0.0076 | - | - | 48 B |
'Array test' | 1000 | 251.66 ns | 5.053 ns | 7.717 ns | 1.386 ns | 248.58 ns | 244.03 ns | 246.38 ns | 253.78 ns | 273.66 ns | 3,973,635.1 | 0.15 | 0.00 | 1 | - | - | - | - |
'ConcurrentBag test' | 1000 | 4,242.04 ns | 81.811 ns | 103.465 ns | 21.574 ns | 4,235.63 ns | 4,086.83 ns | 4,148.29 ns | 4,305.47 ns | 4,439.28 ns | 235,735.6 | 2.42 | 0.09 | 4 | 0.6409 | 0.0076 | - | 4,056 B |
'HashSet test' | 1000 | 1,971.16 ns | 23.371 ns | 20.717 ns | 5.537 ns | 1,968.27 ns | 1,925.76 ns | 1,964.25 ns | 1,984.90 ns | 2,004.93 ns | 507,315.7 | 1.13 | 0.03 | 3 | - | - | - | - |
'List test' | 1000 | 1,748.23 ns | 34.606 ns | 37.028 ns | 8.728 ns | 1,740.35 ns | 1,699.07 ns | 1,717.02 ns | 1,778.54 ns | 1,819.20 ns | 572,007.9 | 1.00 | 0.00 | 2 | - | - | - | - |
'ArrayList test' | 10000 | 47,658.76 ns | 1,598.432 ns | 4,687.926 ns | 471.154 ns | 45,443.73 ns | 43,173.21 ns | 44,329.61 ns | 49,901.31 ns | 59,560.46 ns | 20,982.5 | 2.14 | 0.25 | 5 | - | - | - | 48 B |
'Array test' | 10000 | 2,548.48 ns | 50.491 ns | 130.334 ns | 14.757 ns | 2,494.11 ns | 2,395.44 ns | 2,465.39 ns | 2,574.03 ns | 2,963.41 ns | 392,390.6 | 0.11 | 0.01 | 1 | - | - | - | - |
'ConcurrentBag test' | 10000 | 41,284.45 ns | 466.935 ns | 413.926 ns | 110.626 ns | 41,273.57 ns | 40,603.12 ns | 40,947.65 ns | 41,676.27 ns | 41,892.67 ns | 24,222.2 | 1.57 | 0.25 | 4 | 6.3477 | 0.6714 | - | 40,056 B |
'HashSet test' | 10000 | 19,780.47 ns | 310.650 ns | 242.535 ns | 70.014 ns | 19,736.80 ns | 19,506.46 ns | 19,672.78 ns | 19,815.43 ns | 20,227.13 ns | 50,554.9 | 0.72 | 0.10 | 2 | - | - | - | - |
'List test' | 10000 | 22,475.92 ns | 1,202.317 ns | 3,430.277 ns | 353.806 ns | 21,454.56 ns | 17,219.84 ns | 20,262.82 ns | 23,574.10 ns | 31,651.68 ns | 44,492.1 | 1.00 | 0.00 | 3 | - | - | - | - |
'ArrayList test' | 100000 | 451,734.69 ns | 8,059.056 ns | 8,276.057 ns | 2,007.239 ns | 449,775.59 ns | 444,991.02 ns | 445,757.81 ns | 454,202.64 ns | 477,244.43 ns | 2,213.7 | 2.10 | 0.04 | 4 | - | - | - | 49 B |
'Array test' | 100000 | 24,119.59 ns | 212.578 ns | 177.512 ns | 49.233 ns | 24,122.42 ns | 23,823.25 ns | 24,026.14 ns | 24,214.33 ns | 24,518.18 ns | 41,460.1 | 0.11 | 0.00 | 1 | - | - | - | - |
'ConcurrentBag test' | 100000 | 441,126.82 ns | 6,062.129 ns | 5,373.920 ns | 1,436.240 ns | 438,505.59 ns | 435,264.65 ns | 437,313.29 ns | 444,501.09 ns | 453,501.17 ns | 2,266.9 | 2.05 | 0.04 | 3 | 64.4531 | 64.4531 | 64.4531 | 400,359 B |
'HashSet test' | 100000 | 227,935.21 ns | 11,282.329 ns | 33,089.119 ns | 3,325.582 ns | 234,599.95 ns | 191,273.83 ns | 194,765.65 ns | 254,267.57 ns | 311,844.90 ns | 4,387.2 | 0.96 | 0.13 | 2 | - | - | - | - |
'List test' | 100000 | 215,376.32 ns | 4,109.914 ns | 3,643.332 ns | 973.721 ns | 214,766.25 ns | 210,172.40 ns | 212,422.59 ns | 217,689.55 ns | 221,878.21 ns | 4,643.0 | 1.00 | 0.00 | 2 | - | - | - | - |
Increment Tests
Method | Count | Mean | Error | StdDev | StdErr | Median | Min | Q1 | Q3 | Max | Op/s | Ratio | RatioSD | Rank | Allocated |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
x+=1 | 100 | 35.38 ns | 0.555 ns | 0.463 ns | 0.128 ns | 35.24 ns | 34.75 ns | 35.09 ns | 35.76 ns | 36.15 ns | 28,266,741.2 | 1.13 | 0.01 | 2 | - |
x++ | 100 | 31.23 ns | 0.170 ns | 0.142 ns | 0.039 ns | 31.25 ns | 30.92 ns | 31.12 ns | 31.32 ns | 31.44 ns | 32,021,328.4 | 1.00 | 0.00 | 1 | - |
++x | 100 | 31.56 ns | 0.257 ns | 0.228 ns | 0.061 ns | 31.52 ns | 31.26 ns | 31.38 ns | 31.70 ns | 31.95 ns | 31,685,870.9 | 1.01 | 0.01 | 1 | - |
x+=1 | 1000 | 251.95 ns | 2.253 ns | 2.108 ns | 0.544 ns | 251.71 ns | 249.08 ns | 250.03 ns | 253.52 ns | 255.41 ns | 3,969,042.9 | 1.00 | 0.02 | 1 | - |
x++ | 1000 | 253.80 ns | 5.100 ns | 6.264 ns | 1.335 ns | 254.58 ns | 243.57 ns | 247.54 ns | 258.97 ns | 262.84 ns | 3,940,042.5 | 1.00 | 0.00 | 1 | - |
++x | 1000 | 259.64 ns | 4.179 ns | 3.909 ns | 1.009 ns | 259.50 ns | 253.98 ns | 256.44 ns | 261.33 ns | 267.74 ns | 3,851,533.5 | 1.03 | 0.03 | 1 | - |
x+=1 | 10000 | 2,490.82 ns | 19.642 ns | 17.412 ns | 4.654 ns | 2,484.00 ns | 2,464.71 ns | 2,480.85 ns | 2,501.91 ns | 2,526.15 ns | 401,473.4 | 0.95 | 0.09 | 1 | - |
x++ | 10000 | 2,716.50 ns | 85.144 ns | 245.661 ns | 25.073 ns | 2,622.87 ns | 2,467.59 ns | 2,506.28 ns | 2,835.74 ns | 3,315.29 ns | 368,120.3 | 1.00 | 0.00 | 2 | - |
++x | 10000 | 2,502.83 ns | 36.159 ns | 33.823 ns | 8.733 ns | 2,497.52 ns | 2,446.72 ns | 2,482.19 ns | 2,520.83 ns | 2,564.23 ns | 399,547.2 | 0.95 | 0.10 | 1 | - |
x+=1 | 100000 | 26,654.59 ns | 1,025.398 ns | 2,824.244 ns | 301.065 ns | 25,003.73 ns | 23,908.64 ns | 24,709.62 ns | 27,859.12 ns | 36,346.03 ns | 37,517.0 | 1.11 | 0.05 | 1 | - |
x++ | 100000 | 25,080.77 ns | 319.793 ns | 299.135 ns | 77.236 ns | 25,149.76 ns | 24,549.74 ns | 24,834.49 ns | 25,307.57 ns | 25,565.75 ns | 39,871.2 | 1.00 | 0.00 | 1 | - |
++x | 100000 | 24,717.75 ns | 465.955 ns | 478.501 ns | 116.054 ns | 24,655.80 ns | 24,112.66 ns | 24,322.14 ns | 24,948.74 ns | 25,573.83 ns | 40,456.8 | 0.99 | 0.03 | 1 | - |
Is Tests
Method | Mean | Error | StdDev | Median | Ratio | RatioSD | Allocated |
---|---|---|---|---|---|---|---|
IsAssignableTest | 12.3103 ns | 0.2844 ns | 0.2521 ns | 12.2654 ns | ? | ? | - |
IsMethodTest | 0.0017 ns | 0.0028 ns | 0.0068 ns | 0.0000 ns | ? | ? | - |
IsTest | 0.0525 ns | 0.0266 ns | 0.0306 ns | 0.0550 ns | ? | ? | - |
IsTypeTest | 14.3258 ns | 0.1220 ns | 0.1082 ns | 14.3113 ns | ? | ? | - |
List Add Vs Add Range
Method | Count | Mean | Error | StdDev | StdErr | Median | Min | Q1 | Q3 | Max | Op/s | Ratio | RatioSD | Rank | Gen 0 | Gen 1 | Gen 2 | Allocated |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
'List<T> AddRange' | 100 | 89.80 ns | 2.608 ns | 7.441 ns | 0.767 ns | 90.38 ns | 76.88 ns | 83.00 ns | 95.35 ns | 111.6 ns | 11,135,729.0 | 0.20 | 0.01 | 1 | 0.1364 | 0.0004 | - | 856 B |
'List<T> Add' | 100 | 495.52 ns | 4.973 ns | 4.652 ns | 1.201 ns | 494.55 ns | 487.48 ns | 492.89 ns | 498.69 ns | 504.7 ns | 2,018,085.9 | 1.00 | 0.00 | 2 | 0.3490 | 0.0010 | - | 2,192 B |
'List<T> AddRange' | 1000 | 528.82 ns | 10.099 ns | 13.131 ns | 2.680 ns | 525.25 ns | 512.66 ns | 519.35 ns | 535.30 ns | 565.2 ns | 1,890,986.3 | 0.14 | 0.00 | 1 | 1.2836 | 0.0372 | - | 8,056 B |
'List<T> Add' | 1000 | 3,932.36 ns | 58.353 ns | 48.727 ns | 13.515 ns | 3,913.81 ns | 3,890.99 ns | 3,907.65 ns | 3,934.55 ns | 4,063.1 ns | 254,300.1 | 1.00 | 0.00 | 2 | 2.6398 | 0.0763 | - | 16,600 B |
'List<T> AddRange' | 10000 | 6,605.80 ns | 363.975 ns | 1,073.190 ns | 107.319 ns | 6,915.60 ns | 5,109.83 ns | 5,319.75 ns | 7,323.74 ns | 8,983.5 ns | 151,382.1 | 0.09 | 0.01 | 1 | 12.6572 | 2.1057 | - | 80,056 B |
'List<T> Add' | 10000 | 84,983.39 ns | 998.916 ns | 885.513 ns | 236.663 ns | 84,771.99 ns | 83,735.46 ns | 84,268.60 ns | 85,417.66 ns | 86,469.5 ns | 11,767.0 | 1.00 | 0.00 | 2 | 41.6260 | 41.6260 | 41.6260 | 262,456 B |
'List<T> AddRange' | 100000 | 358,020.30 ns | 9,974.876 ns | 28,938.923 ns | 2,938.302 ns | 358,724.02 ns | 286,790.72 ns | 345,003.12 ns | 374,715.14 ns | 419,262.0 ns | 2,793.1 | 0.28 | 0.03 | 1 | 12.2070 | 12.2070 | 12.2070 | 800,093 B |
'List<T> Add' | 100000 | 1,238,757.02 ns | 22,879.417 ns | 45,161.738 ns | 6,518.535 ns | 1,243,350.29 ns | 1,162,668.16 ns | 1,204,489.31 ns | 1,264,289.94 ns | 1,337,551.0 ns | 807.3 | 1.00 | 0.00 | 2 | 44.9219 | 25.3906 | 25.3906 | 2,097,591 B |
List Interface Iteration
Method | Count | Mean | Error | StdDev | StdErr | Median | Min | Q1 | Q3 | Max | Op/s | Ratio | RatioSD | Rank | Gen 0 | Allocated |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
'ICollection ForEach' | 100 | 1,145.69 ns | 22.717 ns | 56.573 ns | 6.621 ns | 1,124.04 ns | 1,068.74 ns | 1,102.65 ns | 1,186.64 ns | 1,301.34 ns | 872,836.7 | 21.90 | 1.34 | 10 | 0.3872 | 2,440 B |
'ICollection<T> ForEach' | 100 | 605.98 ns | 11.331 ns | 22.629 ns | 3.233 ns | 597.53 ns | 584.72 ns | 590.53 ns | 611.28 ns | 676.50 ns | 1,650,225.9 | 11.69 | 0.51 | 6 | 0.0057 | 40 B |
'IEnumerable ForEach' | 100 | 794.31 ns | 8.220 ns | 6.864 ns | 1.904 ns | 794.45 ns | 782.95 ns | 789.46 ns | 798.49 ns | 806.24 ns | 1,258,948.1 | 14.77 | 0.18 | 9 | 0.3881 | 2,440 B |
'IEnumerable<T> ForEach' | 100 | 690.26 ns | 29.570 ns | 87.188 ns | 8.719 ns | 696.16 ns | 587.19 ns | 596.37 ns | 749.72 ns | 897.35 ns | 1,448,728.2 | 14.09 | 0.60 | 7 | 0.0057 | 40 B |
'IList ForEach' | 100 | 808.65 ns | 16.149 ns | 17.279 ns | 4.073 ns | 805.94 ns | 784.02 ns | 792.92 ns | 824.63 ns | 839.12 ns | 1,236,625.3 | 15.04 | 0.35 | 9 | 0.3881 | 2,440 B |
'IList<T> ForEach' | 100 | 755.91 ns | 14.787 ns | 20.729 ns | 3.989 ns | 749.01 ns | 733.65 ns | 737.24 ns | 767.95 ns | 803.23 ns | 1,322,917.5 | 14.04 | 0.38 | 8 | 0.0057 | 40 B |
'IList<T> For' | 100 | 209.74 ns | 4.172 ns | 10.543 ns | 1.217 ns | 204.93 ns | 202.32 ns | 203.73 ns | 210.81 ns | 247.34 ns | 4,767,762.6 | 4.18 | 0.26 | 2 | - | - |
'IList For' | 100 | 431.31 ns | 5.453 ns | 5.101 ns | 1.317 ns | 430.96 ns | 424.32 ns | 427.43 ns | 434.28 ns | 441.35 ns | 2,318,538.9 | 8.02 | 0.12 | 5 | 0.3824 | 2,400 B |
'IReadOnlyCollection<T> ForEach' | 100 | 598.64 ns | 2.314 ns | 2.164 ns | 0.559 ns | 598.57 ns | 594.20 ns | 597.83 ns | 600.05 ns | 602.84 ns | 1,670,443.5 | 11.13 | 0.07 | 6 | 0.0057 | 40 B |
'IReadOnlyList<T> ForEach' | 100 | 832.41 ns | 42.320 ns | 122.778 ns | 12.466 ns | 803.45 ns | 598.43 ns | 749.90 ns | 901.60 ns | 1,151.27 ns | 1,201,335.0 | 15.02 | 0.82 | 9 | 0.0057 | 40 B |
'IReadOnlyList<T> For' | 100 | 260.01 ns | 5.221 ns | 9.281 ns | 1.467 ns | 256.78 ns | 249.05 ns | 252.98 ns | 262.35 ns | 283.51 ns | 3,846,051.6 | 4.87 | 0.19 | 4 | - | - |
'List<T> ForEach' | 100 | 219.04 ns | 15.499 ns | 44.219 ns | 4.561 ns | 187.59 ns | 183.15 ns | 185.32 ns | 245.46 ns | 363.92 ns | 4,565,425.3 | 5.09 | 0.75 | 3 | - | - |
'List<T> For' | 100 | 53.78 ns | 0.266 ns | 0.249 ns | 0.064 ns | 53.75 ns | 53.36 ns | 53.65 ns | 53.98 ns | 54.34 ns | 18,593,067.5 | 1.00 | 0.00 | 1 | - | - |
'ICollection ForEach' | 1000 | 7,833.56 ns | 87.299 ns | 72.899 ns | 20.218 ns | 7,802.37 ns | 7,729.98 ns | 7,799.26 ns | 7,881.54 ns | 7,976.37 ns | 127,655.9 | 14.22 | 2.06 | 7 | 3.8300 | 24,040 B |
'ICollection<T> ForEach' | 1000 | 6,632.26 ns | 289.027 ns | 852.204 ns | 85.220 ns | 6,445.30 ns | 5,701.11 ns | 5,777.23 ns | 7,211.66 ns | 8,847.49 ns | 150,778.1 | 11.89 | 1.21 | 6 | - | 40 B |
'IEnumerable ForEach' | 1000 | 7,811.83 ns | 145.978 ns | 136.548 ns | 35.256 ns | 7,767.46 ns | 7,670.36 ns | 7,710.62 ns | 7,878.72 ns | 8,119.21 ns | 128,011.0 | 13.90 | 2.12 | 7 | 3.8300 | 24,040 B |
'IEnumerable<T> ForEach' | 1000 | 6,507.00 ns | 278.760 ns | 817.554 ns | 82.167 ns | 6,439.04 ns | 5,655.19 ns | 5,719.33 ns | 7,138.72 ns | 8,990.66 ns | 153,680.6 | 11.65 | 1.16 | 6 | - | 40 B |
'IList ForEach' | 1000 | 8,410.15 ns | 86.724 ns | 81.122 ns | 20.945 ns | 8,371.06 ns | 8,326.08 ns | 8,348.06 ns | 8,466.59 ns | 8,608.67 ns | 118,903.9 | 14.94 | 2.16 | 8 | 3.8300 | 24,040 B |
'IList<T> ForEach' | 1000 | 5,855.04 ns | 78.744 ns | 69.804 ns | 18.656 ns | 5,849.05 ns | 5,750.56 ns | 5,804.09 ns | 5,895.12 ns | 6,015.43 ns | 170,793.1 | 10.52 | 1.44 | 6 | - | 40 B |
'IList<T> For' | 1000 | 2,407.91 ns | 107.889 ns | 318.112 ns | 31.811 ns | 2,481.92 ns | 1,971.09 ns | 2,004.90 ns | 2,615.58 ns | 3,178.07 ns | 415,298.7 | 4.33 | 0.59 | 4 | - | - |
'IList For' | 1000 | 4,231.63 ns | 80.244 ns | 89.191 ns | 20.462 ns | 4,212.46 ns | 4,106.69 ns | 4,196.45 ns | 4,252.37 ns | 4,490.17 ns | 236,315.6 | 7.34 | 1.05 | 5 | 3.8223 | 24,000 B |
'IReadOnlyCollection<T> ForEach' | 1000 | 5,794.18 ns | 43.754 ns | 38.787 ns | 10.366 ns | 5,791.37 ns | 5,743.20 ns | 5,771.86 ns | 5,809.46 ns | 5,876.71 ns | 172,586.8 | 10.41 | 1.44 | 6 | - | 40 B |
'IReadOnlyList<T> ForEach' | 1000 | 5,765.61 ns | 56.653 ns | 121.953 ns | 16.297 ns | 5,733.29 ns | 5,667.76 ns | 5,715.84 ns | 5,766.46 ns | 6,488.56 ns | 173,442.3 | 9.64 | 1.24 | 6 | - | 40 B |
'IReadOnlyList<T> For' | 1000 | 1,994.98 ns | 23.308 ns | 21.803 ns | 5.629 ns | 1,987.75 ns | 1,969.15 ns | 1,983.25 ns | 2,007.45 ns | 2,042.94 ns | 501,258.4 | 3.55 | 0.53 | 3 | - | - |
'List<T> ForEach' | 1000 | 1,791.56 ns | 35.848 ns | 78.688 ns | 10.332 ns | 1,763.42 ns | 1,744.43 ns | 1,753.90 ns | 1,783.33 ns | 2,151.35 ns | 558,171.9 | 3.02 | 0.45 | 2 | - | - |
'List<T> For' | 1000 | 561.32 ns | 24.888 ns | 72.994 ns | 7.336 ns | 512.61 ns | 496.04 ns | 500.40 ns | 626.12 ns | 757.39 ns | 1,781,501.7 | 1.00 | 0.00 | 1 | - | - |
'ICollection ForEach' | 10000 | 83,860.05 ns | 1,158.404 ns | 1,026.895 ns | 274.449 ns | 83,638.05 ns | 82,078.16 ns | 83,253.53 ns | 84,288.31 ns | 85,563.26 ns | 11,924.6 | 17.70 | 0.26 | 7 | 38.2080 | 240,040 B |
'ICollection<T> ForEach' | 10000 | 59,337.85 ns | 647.961 ns | 574.401 ns | 153.515 ns | 59,172.17 ns | 58,679.90 ns | 59,004.06 ns | 59,505.23 ns | 60,728.77 ns | 16,852.7 | 12.53 | 0.15 | 6 | - | 40 B |
'IEnumerable ForEach' | 10000 | 84,926.02 ns | 1,524.826 ns | 3,936.062 ns | 445.671 ns | 83,405.40 ns | 82,276.50 ns | 82,767.32 ns | 85,075.52 ns | 100,093.64 ns | 11,775.0 | 19.40 | 1.16 | 7 | 38.2080 | 240,040 B |
'IEnumerable<T> ForEach' | 10000 | 60,159.46 ns | 1,078.701 ns | 2,765.123 ns | 315.115 ns | 59,145.42 ns | 58,273.65 ns | 58,795.34 ns | 59,761.83 ns | 73,023.44 ns | 16,622.5 | 13.29 | 0.98 | 6 | - | 40 B |
'IList ForEach' | 10000 | 93,087.21 ns | 5,316.914 ns | 15,593.589 ns | 1,567.215 ns | 84,863.60 ns | 81,912.61 ns | 82,530.70 ns | 104,601.41 ns | 142,472.83 ns | 10,742.6 | 23.27 | 4.52 | 7 | 38.2080 | 240,040 B |
'IList<T> ForEach' | 10000 | 59,865.00 ns | 763.079 ns | 1,674.977 ns | 219.935 ns | 59,279.46 ns | 58,880.63 ns | 59,140.74 ns | 59,764.12 ns | 68,897.74 ns | 16,704.2 | 12.84 | 0.64 | 6 | - | 40 B |
'IList<T> For' | 10000 | 19,909.12 ns | 213.819 ns | 189.545 ns | 50.658 ns | 19,853.24 ns | 19,677.67 ns | 19,761.04 ns | 20,014.10 ns | 20,362.37 ns | 50,228.2 | 4.20 | 0.05 | 3 | - | - |
'IList For' | 10000 | 46,890.52 ns | 2,476.182 ns | 7,262.212 ns | 729.880 ns | 42,529.90 ns | 40,791.22 ns | 41,377.99 ns | 53,116.28 ns | 68,820.34 ns | 21,326.3 | 10.27 | 1.77 | 4 | 38.2080 | 240,000 B |
'IReadOnlyCollection<T> ForEach' | 10000 | 58,657.82 ns | 1,208.823 ns | 3,226.593 ns | 354.165 ns | 57,426.51 ns | 56,668.70 ns | 57,000.74 ns | 58,102.31 ns | 70,691.02 ns | 17,048.0 | 12.98 | 1.22 | 5 | - | 40 B |
'IReadOnlyList<T> ForEach' | 10000 | 62,792.76 ns | 1,986.397 ns | 5,794.413 ns | 585.324 ns | 59,578.55 ns | 58,528.87 ns | 59,138.24 ns | 66,205.39 ns | 79,563.31 ns | 15,925.4 | 14.41 | 1.40 | 6 | - | 40 B |
'IReadOnlyList<T> For' | 10000 | 19,915.07 ns | 132.689 ns | 110.801 ns | 30.731 ns | 19,944.76 ns | 19,713.57 ns | 19,820.20 ns | 20,006.87 ns | 20,068.50 ns | 50,213.2 | 4.20 | 0.05 | 3 | - | - |
'List<T> ForEach' | 10000 | 18,300.88 ns | 683.059 ns | 1,904.096 ns | 200.709 ns | 17,592.67 ns | 16,492.50 ns | 17,079.66 ns | 18,600.59 ns | 23,220.13 ns | 54,642.2 | 4.75 | 0.15 | 2 | - | - |
'List<T> For' | 10000 | 4,739.57 ns | 44.365 ns | 37.047 ns | 10.275 ns | 4,731.23 ns | 4,686.92 ns | 4,712.64 ns | 4,761.27 ns | 4,803.41 ns | 210,989.7 | 1.00 | 0.00 | 1 | - | - |
'ICollection ForEach' | 100000 | 818,055.40 ns | 16,033.539 ns | 41,387.683 ns | 4,686.232 ns | 805,305.96 ns | 779,512.70 ns | 789,137.43 ns | 828,297.80 ns | 953,353.61 ns | 1,222.4 | 17.66 | 1.41 | 7 | 381.8359 | 2,400,040 B |
'ICollection<T> ForEach' | 100000 | 569,801.86 ns | 11,127.606 ns | 10,928.797 ns | 2,732.199 ns | 567,895.80 ns | 550,775.10 ns | 563,315.01 ns | 576,502.81 ns | 589,706.15 ns | 1,755.0 | 11.93 | 0.29 | 6 | - | 40 B |
'IEnumerable ForEach' | 100000 | 801,465.23 ns | 15,401.423 ns | 16,479.350 ns | 3,884.220 ns | 796,562.40 ns | 781,208.89 ns | 788,145.87 ns | 814,550.15 ns | 828,928.91 ns | 1,247.7 | 16.82 | 0.44 | 7 | 381.8359 | 2,400,040 B |
'IEnumerable<T> ForEach' | 100000 | 576,296.50 ns | 9,589.157 ns | 8,969.704 ns | 2,315.968 ns | 576,658.50 ns | 563,332.91 ns | 568,478.71 ns | 582,489.01 ns | 592,870.61 ns | 1,735.2 | 12.05 | 0.25 | 6 | - | 41 B |
'IList ForEach' | 100000 | 805,049.84 ns | 8,164.166 ns | 18,921.696 ns | 2,365.212 ns | 802,055.13 ns | 772,227.83 ns | 791,431.76 ns | 816,016.53 ns | 858,640.04 ns | 1,242.2 | 16.94 | 0.76 | 7 | 381.8359 | 2,400,040 B |
'IList<T> ForEach' | 100000 | 566,158.48 ns | 10,540.276 ns | 10,824.088 ns | 2,625.227 ns | 569,338.28 ns | 541,913.67 ns | 562,697.07 ns | 572,939.65 ns | 582,836.82 ns | 1,766.3 | 11.82 | 0.28 | 6 | - | 40 B |
'IList<T> For' | 100000 | 194,341.80 ns | 2,433.237 ns | 2,157.001 ns | 576.483 ns | 194,211.68 ns | 190,740.19 ns | 193,320.78 ns | 195,936.46 ns | 197,804.64 ns | 5,145.6 | 4.06 | 0.07 | 3 | - | - |
'IList For' | 100000 | 407,787.71 ns | 8,103.629 ns | 8,670.792 ns | 2,043.725 ns | 407,743.55 ns | 394,557.47 ns | 400,512.59 ns | 412,572.47 ns | 428,294.78 ns | 2,452.3 | 8.49 | 0.22 | 4 | 382.3242 | 2,400,000 B |
'IReadOnlyCollection<T> ForEach' | 100000 | 554,437.40 ns | 5,598.486 ns | 4,962.912 ns | 1,326.394 ns | 553,444.24 ns | 545,965.97 ns | 551,923.32 ns | 557,208.62 ns | 561,826.03 ns | 1,803.6 | 11.59 | 0.19 | 5 | - | 40 B |
'IReadOnlyList<T> ForEach' | 100000 | 607,136.93 ns | 19,509.362 ns | 56,288.970 ns | 5,744.969 ns | 578,306.30 ns | 543,218.36 ns | 568,994.85 ns | 642,707.10 ns | 765,641.99 ns | 1,647.1 | 14.33 | 0.89 | 6 | - | 40 B |
'IReadOnlyList<T> For' | 100000 | 191,316.58 ns | 2,383.960 ns | 2,113.318 ns | 564.808 ns | 190,344.35 ns | 188,609.59 ns | 189,956.84 ns | 193,304.41 ns | 195,119.41 ns | 5,226.9 | 4.00 | 0.06 | 3 | - | - |
'List<T> ForEach' | 100000 | 170,360.08 ns | 2,899.457 ns | 2,712.154 ns | 700.275 ns | 170,020.56 ns | 165,619.02 ns | 169,128.09 ns | 172,343.93 ns | 175,410.42 ns | 5,869.9 | 3.56 | 0.06 | 2 | - | - |
'List<T> For' | 100000 | 47,863.59 ns | 631.754 ns | 560.033 ns | 149.675 ns | 47,961.43 ns | 46,963.37 ns | 47,450.96 ns | 48,175.22 ns | 48,719.93 ns | 20,892.7 | 1.00 | 0.00 | 1 | - | - |
List Vs Dictionary
Method | Count | Mean | Error | StdDev | StdErr | Median | Min | Q1 | Q3 | Max | Op/s | Ratio | RatioSD | Rank | Gen 0 | Allocated |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
'ArrayList for loop' | 100 | 570.06 ns | 9.989 ns | 8.855 ns | 2.367 ns | 568.93 ns | 559.66 ns | 564.00 ns | 574.14 ns | 585.50 ns | 1,754,195.4 | 0.487 | 0.01 | 4 | - | - |
Collection.First | 100 | 1,267.70 ns | 17.267 ns | 16.151 ns | 4.170 ns | 1,267.33 ns | 1,241.93 ns | 1,256.13 ns | 1,275.59 ns | 1,302.17 ns | 788,833.1 | 1.082 | 0.02 | 9 | 0.0057 | 40 B |
Collection.FirstOrDefault | 100 | 1,179.86 ns | 13.373 ns | 12.509 ns | 3.230 ns | 1,179.18 ns | 1,156.06 ns | 1,172.70 ns | 1,190.62 ns | 1,201.16 ns | 847,557.5 | 1.007 | 0.02 | 7 | 0.0057 | 40 B |
'Collection for loop' | 100 | 661.16 ns | 8.257 ns | 7.320 ns | 1.956 ns | 659.61 ns | 651.53 ns | 655.32 ns | 665.83 ns | 674.70 ns | 1,512,495.9 | 0.564 | 0.01 | 5 | - | - |
'Dictionary[]' | 100 | 11.51 ns | 0.257 ns | 0.241 ns | 0.062 ns | 11.48 ns | 11.18 ns | 11.33 ns | 11.64 ns | 12.07 ns | 86,848,246.4 | 0.010 | 0.00 | 1 | - | - |
Dictionary.TryGetValue | 100 | 11.35 ns | 0.146 ns | 0.122 ns | 0.034 ns | 11.39 ns | 11.12 ns | 11.32 ns | 11.42 ns | 11.53 ns | 88,080,890.9 | 0.010 | 0.00 | 1 | - | - |
HashSet.First | 100 | 1,192.80 ns | 32.768 ns | 96.103 ns | 9.659 ns | 1,148.69 ns | 1,092.63 ns | 1,117.07 ns | 1,261.18 ns | 1,487.35 ns | 838,362.3 | 1.110 | 0.07 | 7 | 0.0057 | 40 B |
HashSet.FirstOrDefault | 100 | 1,211.75 ns | 9.871 ns | 8.243 ns | 2.286 ns | 1,210.24 ns | 1,196.46 ns | 1,206.16 ns | 1,217.42 ns | 1,225.00 ns | 825,252.7 | 1.035 | 0.02 | 8 | 0.0057 | 40 B |
'ImmutableDictionary[]' | 100 | 28.16 ns | 0.484 ns | 0.453 ns | 0.117 ns | 28.34 ns | 27.39 ns | 27.83 ns | 28.44 ns | 28.85 ns | 35,506,337.8 | 0.024 | 0.00 | 2 | - | - |
ImmutableDictionary.TryGetValue | 100 | 28.40 ns | 0.499 ns | 0.466 ns | 0.120 ns | 28.35 ns | 27.67 ns | 28.09 ns | 28.91 ns | 28.99 ns | 35,213,227.1 | 0.024 | 0.00 | 2 | - | - |
ImmutableList.First | 100 | 5,245.82 ns | 63.485 ns | 59.384 ns | 15.333 ns | 5,249.25 ns | 5,143.23 ns | 5,202.59 ns | 5,293.48 ns | 5,341.79 ns | 190,628.1 | 4.485 | 0.08 | 10 | 0.0076 | 72 B |
ImmutableList.FirstOrDefault | 100 | 5,302.15 ns | 54.411 ns | 50.896 ns | 13.141 ns | 5,303.57 ns | 5,228.02 ns | 5,266.56 ns | 5,343.82 ns | 5,385.89 ns | 188,602.8 | 4.529 | 0.08 | 10 | 0.0076 | 72 B |
'ImmutableList for loop' | 100 | 1,014.22 ns | 20.198 ns | 19.837 ns | 4.959 ns | 1,015.68 ns | 989.99 ns | 994.28 ns | 1,024.80 ns | 1,050.78 ns | 985,981.7 | 0.867 | 0.01 | 6 | - | - |
List.First | 100 | 1,171.46 ns | 16.630 ns | 14.742 ns | 3.940 ns | 1,165.09 ns | 1,153.00 ns | 1,160.96 ns | 1,180.99 ns | 1,204.60 ns | 853,638.5 | 1.000 | 0.00 | 7 | 0.0057 | 40 B |
List.FirstOrDefault | 100 | 1,181.19 ns | 9.409 ns | 8.341 ns | 2.229 ns | 1,183.25 ns | 1,169.21 ns | 1,173.08 ns | 1,186.71 ns | 1,194.67 ns | 846,604.5 | 1.008 | 0.01 | 7 | 0.0057 | 40 B |
'List for loop' | 100 | 337.40 ns | 3.874 ns | 3.434 ns | 0.918 ns | 337.11 ns | 331.98 ns | 334.92 ns | 339.02 ns | 345.07 ns | 2,963,860.6 | 0.288 | 0.00 | 3 | - | - |
'ArrayList for loop' | 1000 | 565.30 ns | 3.453 ns | 2.883 ns | 0.800 ns | 565.28 ns | 562.26 ns | 563.04 ns | 566.20 ns | 572.40 ns | 1,768,984.6 | 0.447 | 0.01 | 4 | - | - |
Collection.First | 1000 | 1,189.83 ns | 23.315 ns | 21.809 ns | 5.631 ns | 1,184.58 ns | 1,156.08 ns | 1,174.89 ns | 1,203.65 ns | 1,229.65 ns | 840,456.8 | 0.940 | 0.02 | 6 | 0.0057 | 40 B |
Collection.FirstOrDefault | 1000 | 1,164.32 ns | 12.330 ns | 11.533 ns | 2.978 ns | 1,163.20 ns | 1,147.23 ns | 1,155.02 ns | 1,169.44 ns | 1,187.93 ns | 858,869.9 | 0.921 | 0.01 | 6 | 0.0057 | 40 B |
'Collection for loop' | 1000 | 612.10 ns | 4.186 ns | 3.495 ns | 0.969 ns | 612.08 ns | 605.58 ns | 609.42 ns | 613.42 ns | 618.39 ns | 1,633,709.8 | 0.484 | 0.01 | 5 | - | - |
'Dictionary[]' | 1000 | 11.39 ns | 0.227 ns | 0.201 ns | 0.054 ns | 11.31 ns | 11.22 ns | 11.26 ns | 11.47 ns | 11.83 ns | 87,773,555.9 | 0.009 | 0.00 | 1 | - | - |
Dictionary.TryGetValue | 1000 | 11.28 ns | 0.244 ns | 0.308 ns | 0.064 ns | 11.17 ns | 10.92 ns | 11.04 ns | 11.48 ns | 12.00 ns | 88,647,418.6 | 0.009 | 0.00 | 1 | - | - |
HashSet.First | 1000 | 1,184.26 ns | 17.119 ns | 15.175 ns | 4.056 ns | 1,187.00 ns | 1,150.96 ns | 1,179.42 ns | 1,191.41 ns | 1,205.40 ns | 844,406.0 | 0.936 | 0.01 | 6 | 0.0057 | 40 B |
HashSet.FirstOrDefault | 1000 | 1,334.12 ns | 29.649 ns | 82.158 ns | 8.709 ns | 1,300.29 ns | 1,267.71 ns | 1,282.79 ns | 1,335.78 ns | 1,582.84 ns | 749,556.7 | 1.186 | 0.05 | 8 | 0.0057 | 40 B |
'ImmutableDictionary[]' | 1000 | 28.97 ns | 0.479 ns | 0.448 ns | 0.116 ns | 28.89 ns | 28.38 ns | 28.63 ns | 29.17 ns | 29.92 ns | 34,515,419.3 | 0.023 | 0.00 | 2 | - | - |
ImmutableDictionary.TryGetValue | 1000 | 29.04 ns | 0.442 ns | 0.414 ns | 0.107 ns | 29.09 ns | 28.50 ns | 28.65 ns | 29.30 ns | 29.78 ns | 34,439,559.4 | 0.023 | 0.00 | 2 | - | - |
ImmutableList.First | 1000 | 5,551.94 ns | 72.502 ns | 64.271 ns | 17.177 ns | 5,538.41 ns | 5,468.98 ns | 5,501.48 ns | 5,579.36 ns | 5,694.67 ns | 180,117.2 | 4.388 | 0.06 | 10 | 0.0076 | 72 B |
ImmutableList.FirstOrDefault | 1000 | 5,315.28 ns | 56.739 ns | 53.073 ns | 13.703 ns | 5,301.77 ns | 5,247.16 ns | 5,266.21 ns | 5,347.05 ns | 5,414.91 ns | 188,137.0 | 4.205 | 0.05 | 9 | 0.0076 | 72 B |
'ImmutableList for loop' | 1000 | 1,331.95 ns | 17.320 ns | 16.201 ns | 4.183 ns | 1,330.03 ns | 1,304.22 ns | 1,319.23 ns | 1,344.72 ns | 1,356.83 ns | 750,778.8 | 1.052 | 0.02 | 8 | - | - |
List.First | 1000 | 1,265.22 ns | 12.978 ns | 11.505 ns | 3.075 ns | 1,262.34 ns | 1,251.82 ns | 1,257.65 ns | 1,269.68 ns | 1,286.25 ns | 790,374.0 | 1.000 | 0.00 | 7 | 0.0057 | 40 B |
List.FirstOrDefault | 1000 | 1,176.25 ns | 10.274 ns | 9.108 ns | 2.434 ns | 1,174.64 ns | 1,163.31 ns | 1,169.67 ns | 1,180.58 ns | 1,193.81 ns | 850,162.6 | 0.930 | 0.01 | 6 | 0.0057 | 40 B |
'List for loop' | 1000 | 343.38 ns | 5.552 ns | 4.921 ns | 1.315 ns | 342.03 ns | 337.59 ns | 339.80 ns | 347.39 ns | 353.06 ns | 2,912,203.6 | 0.271 | 0.00 | 3 | - | - |
'ArrayList for loop' | 10000 | 574.03 ns | 8.104 ns | 7.184 ns | 1.920 ns | 576.97 ns | 561.15 ns | 570.56 ns | 577.43 ns | 584.30 ns | 1,742,057.6 | 0.448 | 0.01 | 4 | - | - |
Collection.First | 10000 | 1,163.74 ns | 12.741 ns | 11.918 ns | 3.077 ns | 1,164.90 ns | 1,137.96 ns | 1,154.87 ns | 1,171.29 ns | 1,187.92 ns | 859,301.2 | 0.907 | 0.02 | 7 | 0.0057 | 40 B |
Collection.FirstOrDefault | 10000 | 1,212.12 ns | 14.385 ns | 12.752 ns | 3.408 ns | 1,211.59 ns | 1,183.59 ns | 1,208.01 ns | 1,220.86 ns | 1,231.88 ns | 825,000.7 | 0.945 | 0.02 | 8 | 0.0057 | 40 B |
'Collection for loop' | 10000 | 666.14 ns | 12.380 ns | 11.580 ns | 2.990 ns | 664.70 ns | 646.08 ns | 658.02 ns | 673.05 ns | 689.10 ns | 1,501,189.5 | 0.520 | 0.02 | 5 | - | - |
'Dictionary[]' | 10000 | 11.55 ns | 0.247 ns | 0.284 ns | 0.064 ns | 11.46 ns | 11.07 ns | 11.42 ns | 11.60 ns | 12.24 ns | 86,572,904.2 | 0.009 | 0.00 | 1 | - | - |
Dictionary.TryGetValue | 10000 | 11.53 ns | 0.089 ns | 0.078 ns | 0.021 ns | 11.54 ns | 11.44 ns | 11.46 ns | 11.56 ns | 11.70 ns | 86,715,147.8 | 0.009 | 0.00 | 1 | - | - |
HashSet.First | 10000 | 1,131.74 ns | 14.129 ns | 13.216 ns | 3.412 ns | 1,128.32 ns | 1,114.75 ns | 1,123.43 ns | 1,141.55 ns | 1,162.50 ns | 883,594.0 | 0.881 | 0.02 | 6 | 0.0057 | 40 B |
HashSet.FirstOrDefault | 10000 | 1,221.00 ns | 8.073 ns | 7.552 ns | 1.950 ns | 1,219.25 ns | 1,209.44 ns | 1,215.44 ns | 1,225.81 ns | 1,234.15 ns | 818,998.3 | 0.952 | 0.02 | 8 | 0.0057 | 40 B |
'ImmutableDictionary[]' | 10000 | 27.54 ns | 0.283 ns | 0.264 ns | 0.068 ns | 27.49 ns | 27.05 ns | 27.40 ns | 27.69 ns | 27.94 ns | 36,306,611.6 | 0.021 | 0.00 | 2 | - | - |
ImmutableDictionary.TryGetValue | 10000 | 27.96 ns | 0.244 ns | 0.216 ns | 0.058 ns | 27.99 ns | 27.54 ns | 27.85 ns | 28.08 ns | 28.38 ns | 35,766,839.7 | 0.022 | 0.00 | 2 | - | - |
ImmutableList.First | 10000 | 5,660.38 ns | 111.631 ns | 104.420 ns | 26.961 ns | 5,647.33 ns | 5,530.70 ns | 5,584.53 ns | 5,685.67 ns | 5,878.35 ns | 176,666.7 | 4.414 | 0.12 | 11 | 0.0076 | 72 B |
ImmutableList.FirstOrDefault | 10000 | 5,537.41 ns | 105.387 ns | 98.579 ns | 25.453 ns | 5,517.45 ns | 5,336.96 ns | 5,483.52 ns | 5,600.82 ns | 5,744.68 ns | 180,589.8 | 4.321 | 0.13 | 11 | 0.0076 | 72 B |
'ImmutableList for loop' | 10000 | 2,104.24 ns | 41.351 ns | 38.679 ns | 9.987 ns | 2,091.64 ns | 2,056.73 ns | 2,081.22 ns | 2,129.92 ns | 2,196.82 ns | 475,230.6 | 1.641 | 0.05 | 10 | - | - |
List.First | 10000 | 1,282.93 ns | 24.187 ns | 21.441 ns | 5.730 ns | 1,277.39 ns | 1,251.92 ns | 1,269.73 ns | 1,296.50 ns | 1,326.05 ns | 779,464.6 | 1.000 | 0.00 | 9 | 0.0057 | 40 B |
List.FirstOrDefault | 10000 | 1,198.64 ns | 17.623 ns | 15.622 ns | 4.175 ns | 1,197.81 ns | 1,179.69 ns | 1,185.57 ns | 1,214.29 ns | 1,226.08 ns | 834,280.1 | 0.935 | 0.02 | 8 | 0.0057 | 40 B |
'List for loop' | 10000 | 335.76 ns | 5.390 ns | 5.042 ns | 1.302 ns | 334.83 ns | 329.17 ns | 331.73 ns | 339.06 ns | 343.94 ns | 2,978,305.6 | 0.262 | 0.00 | 3 | - | - |
'ArrayList for loop' | 100000 | 619.27 ns | 11.149 ns | 9.883 ns | 2.641 ns | 615.39 ns | 601.44 ns | 613.34 ns | 629.20 ns | 634.65 ns | 1,614,791.7 | 0.53 | 0.01 | 5 | - | - |
Collection.First | 100000 | 1,283.01 ns | 23.696 ns | 34.733 ns | 6.450 ns | 1,290.29 ns | 1,229.35 ns | 1,254.36 ns | 1,299.79 ns | 1,369.97 ns | 779,415.9 | 1.10 | 0.04 | 9 | 0.0057 | 40 B |
Collection.FirstOrDefault | 100000 | 1,207.60 ns | 22.018 ns | 20.596 ns | 5.318 ns | 1,205.33 ns | 1,175.75 ns | 1,194.30 ns | 1,223.87 ns | 1,241.58 ns | 828,091.6 | 1.04 | 0.02 | 8 | 0.0057 | 40 B |
'Collection for loop' | 100000 | 645.75 ns | 9.680 ns | 8.581 ns | 2.293 ns | 646.58 ns | 634.18 ns | 638.33 ns | 649.11 ns | 663.53 ns | 1,548,590.3 | 0.55 | 0.01 | 6 | - | - |
'Dictionary[]' | 100000 | 13.23 ns | 0.158 ns | 0.148 ns | 0.038 ns | 13.24 ns | 12.97 ns | 13.14 ns | 13.32 ns | 13.53 ns | 75,577,230.7 | 0.01 | 0.00 | 1 | - | - |
Dictionary.TryGetValue | 100000 | 13.05 ns | 0.270 ns | 0.240 ns | 0.064 ns | 13.02 ns | 12.62 ns | 12.96 ns | 13.19 ns | 13.46 ns | 76,618,974.8 | 0.01 | 0.00 | 1 | - | - |
HashSet.First | 100000 | 1,174.38 ns | 22.209 ns | 20.774 ns | 5.364 ns | 1,173.40 ns | 1,153.97 ns | 1,155.84 ns | 1,181.29 ns | 1,218.22 ns | 851,510.3 | 1.01 | 0.03 | 7 | 0.0057 | 40 B |
HashSet.FirstOrDefault | 100000 | 1,249.51 ns | 24.826 ns | 33.141 ns | 6.628 ns | 1,243.56 ns | 1,206.17 ns | 1,223.09 ns | 1,270.16 ns | 1,325.04 ns | 800,312.7 | 1.09 | 0.04 | 8 | 0.0057 | 40 B |
'ImmutableDictionary[]' | 100000 | 32.49 ns | 0.643 ns | 0.740 ns | 0.166 ns | 32.38 ns | 31.71 ns | 31.81 ns | 32.81 ns | 34.40 ns | 30,775,696.0 | 0.03 | 0.00 | 3 | - | - |
ImmutableDictionary.TryGetValue | 100000 | 26.79 ns | 0.560 ns | 0.524 ns | 0.135 ns | 26.75 ns | 26.07 ns | 26.42 ns | 27.12 ns | 27.95 ns | 37,332,450.1 | 0.02 | 0.00 | 2 | - | - |
ImmutableList.First | 100000 | 5,626.10 ns | 86.734 ns | 81.131 ns | 20.948 ns | 5,649.20 ns | 5,484.52 ns | 5,555.68 ns | 5,671.09 ns | 5,749.95 ns | 177,743.1 | 4.83 | 0.10 | 11 | 0.0076 | 72 B |
ImmutableList.FirstOrDefault | 100000 | 5,549.44 ns | 89.894 ns | 84.087 ns | 21.711 ns | 5,533.67 ns | 5,443.70 ns | 5,473.20 ns | 5,598.35 ns | 5,732.07 ns | 180,198.3 | 4.77 | 0.12 | 11 | 0.0076 | 72 B |
'ImmutableList for loop' | 100000 | 2,485.55 ns | 39.192 ns | 36.660 ns | 9.466 ns | 2,471.42 ns | 2,439.56 ns | 2,457.75 ns | 2,504.26 ns | 2,557.02 ns | 402,325.0 | 2.14 | 0.04 | 10 | - | - |
List.First | 100000 | 1,164.40 ns | 22.596 ns | 21.136 ns | 5.457 ns | 1,162.09 ns | 1,132.03 ns | 1,148.51 ns | 1,177.84 ns | 1,202.33 ns | 858,810.6 | 1.00 | 0.00 | 7 | 0.0057 | 40 B |
List.FirstOrDefault | 100000 | 1,224.52 ns | 18.444 ns | 17.252 ns | 4.455 ns | 1,220.41 ns | 1,195.75 ns | 1,212.47 ns | 1,236.09 ns | 1,259.05 ns | 816,647.5 | 1.05 | 0.03 | 8 | 0.0057 | 40 B |
'List for loop' | 100000 | 347.20 ns | 6.279 ns | 5.874 ns | 1.517 ns | 344.81 ns | 340.70 ns | 342.81 ns | 351.96 ns | 359.13 ns | 2,880,213.8 | 0.30 | 0.01 | 4 | - | - |
List Vs Yield
Method | Mean | Error | StdDev | Ratio | RatioSD | Gen 0 | Allocated |
---|---|---|---|---|---|---|---|
List | 40.11 ns | 0.773 ns | 0.794 ns | 1.00 | 0.00 | 0.0255 | 160 B |
ListNotConstructor | 31.98 ns | 0.449 ns | 0.420 ns | 0.80 | 0.02 | 0.0178 | 112 B |
Yield | 68.67 ns | 1.142 ns | 1.069 ns | 1.71 | 0.05 | 0.0254 | 160 B |
Loop Tests
Method | Count | Mean | Error | StdDev | StdErr | Min | Q1 | Median | Q3 | Max | Op/s | Ratio | RatioSD | Rank | Allocated |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
'Foreach loop' | 100 | 32.03 ns | 0.217 ns | 0.181 ns | 0.050 ns | 31.71 ns | 31.95 ns | 32.04 ns | 32.23 ns | 32.26 ns | 31,217,549.2 | 1.00 | 0.00 | 1 | - |
'For loop' | 100 | 31.74 ns | 0.392 ns | 0.306 ns | 0.088 ns | 31.32 ns | 31.46 ns | 31.77 ns | 32.00 ns | 32.16 ns | 31,504,079.3 | 0.99 | 0.01 | 1 | - |
'For loop, local length' | 100 | 31.36 ns | 0.344 ns | 0.305 ns | 0.082 ns | 30.95 ns | 31.13 ns | 31.31 ns | 31.56 ns | 31.94 ns | 31,889,885.2 | 0.98 | 0.01 | 1 | - |
'Foreach loop' | 1000 | 249.78 ns | 4.965 ns | 6.456 ns | 1.318 ns | 242.36 ns | 245.17 ns | 247.41 ns | 254.06 ns | 265.16 ns | 4,003,527.0 | 1.00 | 0.00 | 1 | - |
'For loop' | 1000 | 245.05 ns | 2.314 ns | 1.932 ns | 0.536 ns | 241.67 ns | 243.70 ns | 244.78 ns | 246.18 ns | 248.75 ns | 4,080,827.1 | 0.97 | 0.03 | 1 | - |
'For loop, local length' | 1000 | 246.73 ns | 3.544 ns | 3.141 ns | 0.840 ns | 242.27 ns | 243.51 ns | 247.36 ns | 249.09 ns | 250.88 ns | 4,052,951.9 | 0.98 | 0.03 | 1 | - |
'Foreach loop' | 10000 | 2,448.37 ns | 48.014 ns | 55.293 ns | 12.364 ns | 2,367.05 ns | 2,395.42 ns | 2,449.62 ns | 2,493.93 ns | 2,545.85 ns | 408,435.8 | 1.00 | 0.00 | 1 | - |
'For loop' | 10000 | 2,431.79 ns | 42.099 ns | 39.379 ns | 10.168 ns | 2,372.12 ns | 2,403.62 ns | 2,434.19 ns | 2,455.92 ns | 2,513.31 ns | 411,218.9 | 0.99 | 0.03 | 1 | - |
'For loop, local length' | 10000 | 2,453.94 ns | 48.129 ns | 53.495 ns | 12.273 ns | 2,399.52 ns | 2,408.93 ns | 2,425.05 ns | 2,510.83 ns | 2,546.94 ns | 407,507.2 | 1.00 | 0.03 | 1 | - |
'Foreach loop' | 100000 | 24,869.27 ns | 452.832 ns | 401.423 ns | 107.285 ns | 24,300.04 ns | 24,544.40 ns | 24,831.29 ns | 25,132.79 ns | 25,710.15 ns | 40,210.3 | 1.00 | 0.00 | 1 | - |
'For loop' | 100000 | 24,411.12 ns | 392.783 ns | 367.410 ns | 94.865 ns | 23,893.65 ns | 24,138.24 ns | 24,390.41 ns | 24,623.74 ns | 25,159.70 ns | 40,964.9 | 0.98 | 0.02 | 1 | - |
'For loop, local length' | 100000 | 24,366.73 ns | 257.123 ns | 240.513 ns | 62.100 ns | 24,027.55 ns | 24,240.62 ns | 24,330.50 ns | 24,523.35 ns | 24,775.51 ns | 41,039.6 | 0.98 | 0.02 | 1 | - |
Memory Stream Vs Recyclable Memory Stream
Method | Count | Mean | Error | StdDev | StdErr | Median | Min | Q1 | Q3 | Max | Op/s | Ratio | RatioSD | Rank | Gen 0 | Gen 1 | Gen 2 | Allocated |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
MemoryStream | 100 | 56.35 ns | 1.134 ns | 1.165 ns | 0.282 ns | 56.38 ns | 54.42 ns | 55.45 ns | 57.05 ns | 58.74 ns | 17,744,841.0 | 1.00 | 0.00 | 1 | 0.0752 | 0.0001 | - | 472 B |
RecyclableMemoryStream | 100 | 496.58 ns | 9.463 ns | 9.294 ns | 2.324 ns | 493.88 ns | 484.57 ns | 489.64 ns | 502.68 ns | 514.44 ns | 2,013,781.1 | 8.81 | 0.25 | 2 | 0.0801 | - | - | 504 B |
MemoryStream | 1000 | 141.82 ns | 2.258 ns | 1.763 ns | 0.509 ns | 142.23 ns | 139.16 ns | 140.20 ns | 142.67 ns | 145.05 ns | 7,051,193.6 | 1.00 | 0.00 | 1 | 0.3364 | 0.0012 | - | 2,112 B |
RecyclableMemoryStream | 1000 | 576.57 ns | 18.261 ns | 52.980 ns | 5.379 ns | 548.85 ns | 525.02 ns | 536.39 ns | 616.02 ns | 725.28 ns | 1,734,395.2 | 4.78 | 0.21 | 2 | 0.2232 | - | - | 1,400 B |
MemoryStream | 10000 | 1,046.46 ns | 19.302 ns | 18.055 ns | 4.662 ns | 1,042.23 ns | 1,025.40 ns | 1,033.78 ns | 1,054.37 ns | 1,083.82 ns | 955,600.8 | 1.00 | 0.00 | 1 | 3.2043 | 0.1183 | - | 20,112 B |
RecyclableMemoryStream | 10000 | 1,176.64 ns | 23.074 ns | 27.468 ns | 5.994 ns | 1,165.95 ns | 1,134.12 ns | 1,158.75 ns | 1,196.51 ns | 1,231.11 ns | 849,874.5 | 1.13 | 0.03 | 2 | 1.6556 | - | - | 10,400 B |
MemoryStream | 100000 | 77,519.66 ns | 2,499.443 ns | 7,369.665 ns | 736.967 ns | 73,913.46 ns | 69,551.97 ns | 72,587.04 ns | 82,677.00 ns | 96,711.00 ns | 12,900.0 | 1.00 | 0.00 | 2 | 62.3779 | 62.3779 | 62.3779 | 200,112 B |
RecyclableMemoryStream | 100000 | 40,736.41 ns | 768.374 ns | 718.738 ns | 185.577 ns | 40,810.80 ns | 39,565.89 ns | 40,269.64 ns | 41,197.51 ns | 42,124.31 ns | 24,548.1 | 0.55 | 0.04 | 1 | 31.1890 | 31.1890 | 31.1890 | 100,400 B |
Method Call Tests
Method | Count | Mean | Error | StdDev | StdErr | Median | Min | Q1 | Q3 | Max | Op/s | Ratio | RatioSD | Rank | Gen 0 | Allocated |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
'Direct call to method' | 100 | 30.87 ns | 0.243 ns | 0.189 ns | 0.055 ns | 30.83 ns | 30.62 ns | 30.74 ns | 30.97 ns | 31.23 ns | 32,393,694.1 | 1.00 | 0.00 | 1 | - | - |
Func(Method) | 100 | 712.07 ns | 31.120 ns | 90.778 ns | 9.170 ns | 662.62 ns | 632.58 ns | 648.36 ns | 781.93 ns | 978.81 ns | 1,404,362.3 | 21.90 | 1.82 | 3 | 1.0195 | 6,400 B |
Func(=>) | 100 | 175.83 ns | 1.681 ns | 1.572 ns | 0.406 ns | 176.06 ns | 173.03 ns | 174.72 ns | 176.66 ns | 178.07 ns | 5,687,372.8 | 5.71 | 0.05 | 2 | - | - |
'Local method' | 100 | 30.95 ns | 0.307 ns | 0.272 ns | 0.073 ns | 30.88 ns | 30.63 ns | 30.77 ns | 31.10 ns | 31.42 ns | 32,310,172.8 | 1.00 | 0.01 | 1 | - | - |
'MethodInfo, cached' | 100 | 5,972.51 ns | 60.136 ns | 56.252 ns | 14.524 ns | 5,975.44 ns | 5,867.06 ns | 5,938.16 ns | 6,000.20 ns | 6,064.88 ns | 167,433.7 | 193.81 | 2.25 | 4 | 0.3815 | 2,400 B |
'Direct call to method' | 1000 | 251.59 ns | 4.910 ns | 4.593 ns | 1.186 ns | 249.84 ns | 246.62 ns | 248.00 ns | 254.29 ns | 259.70 ns | 3,974,670.9 | 1.00 | 0.00 | 1 | - | - |
Func(Method) | 1000 | 6,308.92 ns | 86.229 ns | 80.659 ns | 20.826 ns | 6,290.41 ns | 6,215.49 ns | 6,241.87 ns | 6,385.39 ns | 6,435.42 ns | 158,505.8 | 25.09 | 0.68 | 3 | 10.2005 | 64,000 B |
Func(=>) | 1000 | 1,698.41 ns | 14.669 ns | 11.452 ns | 3.306 ns | 1,697.22 ns | 1,682.96 ns | 1,689.25 ns | 1,706.15 ns | 1,716.21 ns | 588,787.5 | 6.79 | 0.09 | 2 | - | - |
'Local method' | 1000 | 250.63 ns | 3.322 ns | 2.945 ns | 0.787 ns | 250.59 ns | 246.08 ns | 248.15 ns | 252.33 ns | 256.66 ns | 3,989,897.4 | 1.00 | 0.02 | 1 | - | - |
'MethodInfo, cached' | 1000 | 66,242.90 ns | 1,248.425 ns | 1,106.696 ns | 295.777 ns | 66,136.64 ns | 64,964.71 ns | 65,400.54 ns | 66,851.57 ns | 68,793.02 ns | 15,096.0 | 263.65 | 7.07 | 4 | 3.7842 | 24,000 B |
'Direct call to method' | 10000 | 2,561.94 ns | 50.464 ns | 69.076 ns | 13.547 ns | 2,543.54 ns | 2,441.82 ns | 2,519.05 ns | 2,606.59 ns | 2,727.19 ns | 390,329.6 | 1.00 | 0.00 | 1 | - | - |
Func(Method) | 10000 | 65,629.10 ns | 1,305.972 ns | 1,787.629 ns | 350.583 ns | 65,587.47 ns | 62,870.74 ns | 64,173.22 ns | 66,757.56 ns | 70,240.54 ns | 15,237.1 | 25.63 | 0.91 | 3 | 101.9287 | 640,000 B |
Func(=>) | 10000 | 17,589.30 ns | 297.545 ns | 740.990 ns | 86.726 ns | 17,377.16 ns | 17,122.59 ns | 17,314.27 ns | 17,474.96 ns | 20,617.09 ns | 56,852.7 | 7.02 | 0.45 | 2 | - | - |
'Local method' | 10000 | 2,528.18 ns | 49.108 ns | 48.231 ns | 12.058 ns | 2,520.59 ns | 2,460.60 ns | 2,494.31 ns | 2,555.80 ns | 2,634.11 ns | 395,541.6 | 0.98 | 0.03 | 1 | - | - |
'MethodInfo, cached' | 10000 | 673,946.13 ns | 7,061.675 ns | 6,605.496 ns | 1,705.532 ns | 675,496.97 ns | 664,033.98 ns | 668,257.52 ns | 678,890.53 ns | 686,748.63 ns | 1,483.8 | 260.87 | 8.45 | 4 | 38.0859 | 240,000 B |
'Direct call to method' | 100000 | 24,756.99 ns | 51.204 ns | 39.977 ns | 11.540 ns | 24,771.03 ns | 24,683.09 ns | 24,742.00 ns | 24,781.67 ns | 24,803.59 ns | 40,392.6 | 1.00 | 0.00 | 1 | - | - |
Func(Method) | 100000 | 687,589.38 ns | 18,852.580 ns | 52,240.410 ns | 5,537.472 ns | 665,103.61 ns | 646,082.32 ns | 656,028.61 ns | 687,837.79 ns | 850,823.93 ns | 1,454.4 | 29.18 | 3.20 | 3 | 1019.5313 | 6,400,000 B |
Func(=>) | 100000 | 173,885.30 ns | 1,448.752 ns | 1,284.281 ns | 343.239 ns | 173,979.49 ns | 172,209.84 ns | 172,992.88 ns | 174,502.50 ns | 176,804.30 ns | 5,750.9 | 7.03 | 0.05 | 2 | - | - |
'Local method' | 100000 | 25,254.51 ns | 419.184 ns | 837.156 ns | 119.594 ns | 24,955.76 ns | 24,518.42 ns | 24,797.88 ns | 25,337.59 ns | 27,900.32 ns | 39,596.9 | 1.04 | 0.06 | 1 | - | - |
'MethodInfo, cached' | 100000 | 6,849,768.19 ns | 69,527.077 ns | 61,633.943 ns | 16,472.364 ns | 6,834,344.53 ns | 6,764,375.00 ns | 6,813,370.51 ns | 6,882,742.97 ns | 6,988,984.38 ns | 146.0 | 276.84 | 2.80 | 4 | 375.0000 | 2,400,000 B |
Null Equality Tests
Method | Mean | Error | StdDev | Median | Ratio | RatioSD | Allocated |
---|---|---|---|---|---|---|---|
Equals | 0.4851 ns | 0.0079 ns | 0.0066 ns | 0.4872 ns | 10.49 | 1.29 | - |
EqualsFunc | 0.6063 ns | 0.0806 ns | 0.2260 ns | 0.4952 ns | 21.08 | 5.59 | - |
EqualsObject | 0.0381 ns | 0.0083 ns | 0.0078 ns | 0.0360 ns | 0.85 | 0.16 | - |
Is | 0.0468 ns | 0.0073 ns | 0.0057 ns | 0.0471 ns | 1.00 | 0.00 | - |
ReferenceEquals | 0.0366 ns | 0.0072 ns | 0.0064 ns | 0.0352 ns | 0.76 | 0.10 | - |
Object Creation Tests
Method | Mean | Error | StdDev | StdErr | Median | Min | Q1 | Q3 | Max | Op/s | Ratio | RatioSD | Rank | Gen 0 | Gen 1 | Allocated |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
'Create object using Activator.CreateInstance<T>()' | 26.4678 ns | 0.2905 ns | 0.2425 ns | 0.0673 ns | 26.3805 ns | 26.1593 ns | 26.3390 ns | 26.5540 ns | 26.8473 ns | 37,781,800.1 | ? | ? | 3 | 0.0038 | - | 24 B |
'Create object using Activator.CreateInstance()' | 29.9794 ns | 0.6351 ns | 1.4719 ns | 0.1840 ns | 29.3092 ns | 28.7621 ns | 29.1018 ns | 30.0155 ns | 35.4322 ns | 33,356,241.4 | ? | ? | 4 | 0.0038 | - | 24 B |
'Create object using ConstructorInfo, cached in field' | 72.6548 ns | 1.4224 ns | 1.5220 ns | 0.3587 ns | 72.7255 ns | 69.9149 ns | 71.8405 ns | 73.4710 ns | 75.4013 ns | 13,763,724.5 | ? | ? | 7 | 0.0076 | - | 48 B |
'Create object using compiled lambda expression, cached' | 3.7021 ns | 0.2123 ns | 0.6261 ns | 0.0626 ns | 3.3590 ns | 3.1457 ns | 3.2249 ns | 4.1423 ns | 5.3694 ns | 270,119,319.3 | ? | ? | 2 | 0.0038 | - | 24 B |
'Create object using ConstructorInfo cached' | 70.8486 ns | 0.5032 ns | 0.4707 ns | 0.1215 ns | 70.6595 ns | 70.2778 ns | 70.4919 ns | 71.1468 ns | 71.7138 ns | 14,114,603.0 | ? | ? | 6 | 0.0076 | - | 48 B |
'Create object using ConstructorInfo' | 109.1200 ns | 1.7495 ns | 4.2586 ns | 0.5090 ns | 107.8103 ns | 105.7136 ns | 106.8997 ns | 109.8230 ns | 127.5463 ns | 9,164,226.9 | ? | ? | 8 | 0.0126 | - | 80 B |
'Create object using FormatterServices' | 31.9839 ns | 0.4694 ns | 0.3664 ns | 0.1058 ns | 31.8756 ns | 31.6382 ns | 31.7563 ns | 32.0733 ns | 32.8622 ns | 31,265,754.8 | ? | ? | 5 | 0.0038 | - | 24 B |
'Create object using compiled lambda expression' | 49,978.7618 ns | 824.1060 ns | 1,926.3211 ns | 238.9307 ns | 49,528.0273 ns | 48,069.6411 ns | 48,743.7622 ns | 50,396.4111 ns | 58,308.7708 ns | 20,008.5 | ? | ? | 9 | 0.6104 | 0.3052 | 3,927 B |
'Create object using new' | 0.0569 ns | 0.0381 ns | 0.1074 ns | 0.0112 ns | 0.0000 ns | 0.0000 ns | 0.0000 ns | 0.0270 ns | 0.3421 ns | 17,575,990,437.4 | ? | ? | 1 | - | - | - |
Partitioned Parallel
Method | Count | Mean | Error | StdDev | StdErr | Median | Min | Q1 | Q3 | Max | Op/s | Ratio | RatioSD | Rank | Gen 0 | Allocated |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parallel.For | 100 | 4.177 μs | 0.2961 μs | 0.8731 μs | 0.0873 μs | 3.973 μs | 3.044 μs | 3.398 μs | 5.093 μs | 6.277 μs | 239,383.9 | 1.00 | 0.00 | 1 | 0.4158 | 3 KB |
Parallel.ForEach | 100 | 6.351 μs | 0.1022 μs | 0.1177 μs | 0.0263 μs | 6.336 μs | 6.205 μs | 6.245 μs | 6.438 μs | 6.617 μs | 157,466.2 | 1.40 | 0.22 | 2 | 0.4349 | 3 KB |
'Parallel.ForEach partitioned' | 100 | 11.851 μs | 0.2861 μs | 0.7686 μs | 0.0839 μs | 11.556 μs | 11.158 μs | 11.341 μs | 12.038 μs | 14.598 μs | 84,380.6 | 2.94 | 0.67 | 3 | 0.9155 | 6 KB |
Parallel.For | 1000 | 18.360 μs | 0.3101 μs | 0.2901 μs | 0.0749 μs | 18.251 μs | 17.918 μs | 18.164 μs | 18.641 μs | 18.833 μs | 54,467.3 | 1.00 | 0.00 | 2 | 0.6256 | 4 KB |
Parallel.ForEach | 1000 | 20.711 μs | 0.4029 μs | 0.5238 μs | 0.1069 μs | 20.838 μs | 19.755 μs | 20.251 μs | 21.058 μs | 21.830 μs | 48,282.8 | 1.12 | 0.03 | 3 | 0.6409 | 4 KB |
'Parallel.ForEach partitioned' | 1000 | 10.362 μs | 0.4758 μs | 1.2944 μs | 0.1396 μs | 9.709 μs | 9.475 μs | 9.565 μs | 10.708 μs | 15.156 μs | 96,504.3 | 0.70 | 0.07 | 1 | 0.8240 | 5 KB |
Parallel.For | 10000 | 32.842 μs | 2.8922 μs | 8.5277 μs | 0.8528 μs | 37.600 μs | 19.847 μs | 22.988 μs | 39.051 μs | 46.253 μs | 30,449.2 | 1.00 | 0.00 | 2 | 0.7019 | 4 KB |
Parallel.ForEach | 10000 | 35.297 μs | 3.1657 μs | 9.3340 μs | 0.9334 μs | 42.064 μs | 22.118 μs | 25.020 μs | 43.587 μs | 46.770 μs | 28,330.7 | 1.08 | 0.07 | 3 | 0.7324 | 4 KB |
'Parallel.ForEach partitioned' | 10000 | 17.447 μs | 1.5157 μs | 4.4692 μs | 0.4469 μs | 20.887 μs | 11.407 μs | 12.228 μs | 21.468 μs | 22.693 μs | 57,317.2 | 0.53 | 0.03 | 1 | 0.9308 | 6 KB |
Parallel.For | 100000 | 124.321 μs | 10.1238 μs | 29.8502 μs | 2.9850 μs | 134.103 μs | 68.740 μs | 93.015 μs | 145.604 μs | 169.495 μs | 8,043.7 | 1.00 | 0.00 | 2 | 0.6104 | 4 KB |
Parallel.ForEach | 100000 | 136.863 μs | 14.6948 μs | 43.3281 μs | 4.3328 μs | 123.707 μs | 85.467 μs | 93.132 μs | 176.282 μs | 221.686 μs | 7,306.6 | 1.10 | 0.19 | 3 | 0.6104 | 4 KB |
'Parallel.ForEach partitioned' | 100000 | 30.530 μs | 2.3220 μs | 6.8466 μs | 0.6847 μs | 34.715 μs | 18.383 μs | 23.196 μs | 35.399 μs | 40.059 μs | 32,755.0 | 0.25 | 0.06 | 1 | 1.0071 | 6 KB |
Pattern Matching Tests
Method | Mean | Error | StdDev | StdErr | Median | Min | Q1 | Q3 | Max | Op/s | Ratio | RatioSD | Rank | Gen 0 | Allocated |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
As | 2.151 ns | 0.0698 ns | 0.0747 ns | 0.0176 ns | 2.148 ns | 2.053 ns | 2.093 ns | 2.208 ns | 2.303 ns | 464,990,670.2 | 0.80 | 0.08 | 1 | 0.0038 | 24 B |
Is | 2.395 ns | 0.1561 ns | 0.4577 ns | 0.0460 ns | 2.168 ns | 1.967 ns | 2.088 ns | 2.727 ns | 3.636 ns | 417,462,520.2 | 1.10 | 0.11 | 3 | 0.0038 | 24 B |
'Pattern matching' | 2.178 ns | 0.1330 ns | 0.3902 ns | 0.0392 ns | 1.996 ns | 1.813 ns | 1.884 ns | 2.500 ns | 3.397 ns | 459,195,081.5 | 1.00 | 0.00 | 2 | 0.0038 | 24 B |
Read File
Method | Mean | Error | StdDev | StdErr | Median | Min | Q1 | Q3 | Max | Op/s | Ratio | RatioSD | Rank | Gen 0 | Gen 1 | Gen 2 | Allocated |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
File.Read | 3.653 ms | 0.0170 ms | 0.0142 ms | 0.0039 ms | 3.648 ms | 3.634 ms | 3.643 ms | 3.662 ms | 3.683 ms | 273.762 | 1.00 | 0.00 | 1 | 500.0000 | 500.0000 | 500.0000 | 11,719 KB |
File.ReadAsync | 3.780 ms | 0.0575 ms | 0.0538 ms | 0.0139 ms | 3.764 ms | 3.701 ms | 3.743 ms | 3.818 ms | 3.910 ms | 264.527 | 1.04 | 0.02 | 2 | 500.0000 | 500.0000 | 500.0000 | 11,721 KB |
'File.Read in loop, 1024' | 18.151 ms | 0.3584 ms | 0.4660 ms | 0.0951 ms | 18.133 ms | 17.505 ms | 17.825 ms | 18.480 ms | 19.406 ms | 55.092 | 4.93 | 0.12 | 7 | - | - | - | 5 KB |
'File.Read in loop, 1024, async' | 77.365 ms | 1.5472 ms | 1.5196 ms | 0.3799 ms | 77.597 ms | 74.967 ms | 75.950 ms | 78.564 ms | 80.122 ms | 12.926 | 21.10 | 0.44 | 10 | 166.6667 | - | - | 1,469 KB |
'File.Read in loop, 2048' | 17.705 ms | 0.2227 ms | 0.1975 ms | 0.0528 ms | 17.676 ms | 17.315 ms | 17.615 ms | 17.827 ms | 18.117 ms | 56.481 | 4.84 | 0.05 | 6 | - | - | - | 6 KB |
'File.Read in loop, 2048, async' | 52.240 ms | 0.4904 ms | 0.4348 ms | 0.1162 ms | 52.213 ms | 51.479 ms | 52.032 ms | 52.483 ms | 52.966 ms | 19.142 | 14.30 | 0.16 | 8 | 100.0000 | - | - | 820 KB |
'File.Read in loop, 4096' | 17.158 ms | 0.2380 ms | 0.1987 ms | 0.0551 ms | 17.099 ms | 16.889 ms | 17.029 ms | 17.277 ms | 17.641 ms | 58.282 | 4.70 | 0.06 | 5 | - | - | - | 4 KB |
'File.Read in loop, 4096, async' | 64.581 ms | 1.1828 ms | 1.1616 ms | 0.2904 ms | 64.855 ms | 61.820 ms | 64.176 ms | 65.431 ms | 66.174 ms | 15.484 | 17.64 | 0.33 | 9 | - | - | - | 495 KB |
File.OpenRead | 3.781 ms | 0.0708 ms | 0.0920 ms | 0.0188 ms | 3.805 ms | 3.657 ms | 3.690 ms | 3.847 ms | 3.945 ms | 264.474 | 1.03 | 0.03 | 2 | 500.0000 | 500.0000 | 500.0000 | 11,719 KB |
File.ReadAllBytes | 3.693 ms | 0.0232 ms | 0.0206 ms | 0.0055 ms | 3.690 ms | 3.658 ms | 3.680 ms | 3.704 ms | 3.734 ms | 270.812 | 1.01 | 0.01 | 1 | 500.0000 | 500.0000 | 500.0000 | 11,719 KB |
File.ReadAllBytesAsync | 4.719 ms | 0.0989 ms | 0.2899 ms | 0.0291 ms | 4.716 ms | 4.155 ms | 4.503 ms | 4.909 ms | 5.450 ms | 211.919 | 1.30 | 0.07 | 4 | 414.0625 | 414.0625 | 414.0625 | 11,721 KB |
'File.ReadAllBytes static' | 4.470 ms | 0.0891 ms | 0.1738 ms | 0.0253 ms | 4.458 ms | 4.176 ms | 4.348 ms | 4.587 ms | 4.863 ms | 223.717 | 1.24 | 0.05 | 3 | 500.0000 | 500.0000 | 500.0000 | 11,719 KB |
File.ReadAllLines | 146.018 ms | 2.9034 ms | 7.3902 ms | 0.8477 ms | 142.874 ms | 136.701 ms | 141.156 ms | 151.213 ms | 166.085 ms | 6.848 | 39.43 | 1.44 | 12 | 9000.0000 | 4000.0000 | 1750.0000 | 72,942 KB |
File.ReadAllLinesAsync | 387.959 ms | 7.7523 ms | 17.8123 ms | 2.2441 ms | 382.485 ms | 341.220 ms | 376.208 ms | 399.452 ms | 440.527 ms | 2.578 | 108.66 | 5.77 | 13 | 21000.0000 | 8000.0000 | 3000.0000 | 143,698 KB |
File.ReadAllText | 52.695 ms | 2.0376 ms | 5.9758 ms | 0.6006 ms | 50.680 ms | 44.849 ms | 48.321 ms | 55.836 ms | 68.592 ms | 18.977 | 14.63 | 1.05 | 8 | 4545.4545 | 2181.8182 | 1000.0000 | 46,994 KB |
File.ReadAllTextAsync | 131.793 ms | 5.8084 ms | 17.0351 ms | 1.7121 ms | 125.540 ms | 110.466 ms | 118.233 ms | 144.238 ms | 179.126 ms | 7.588 | 36.95 | 2.70 | 11 | 4333.3333 | 2000.0000 | 1000.0000 | 47,419 KB |
Reflection Caching Tests
Method | Mean | Error | StdDev | StdErr | Min | Q1 | Median | Q3 | Max | Op/s | Ratio | Rank | Gen 0 | Allocated |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
'Get properties with cache' | 0.0000 ns | 0.0000 ns | 0.0000 ns | 0.0000 ns | 0.0000 ns | 0.0000 ns | 0.0000 ns | 0.0000 ns | 0.0000 ns | Infinity | 0.000 | 1 | - | - |
'Get properties with ConcurrentDictionary' | 13.3829 ns | 0.2907 ns | 0.2856 ns | 0.0714 ns | 12.9851 ns | 13.1144 ns | 13.4544 ns | 13.5712 ns | 13.8953 ns | 74,722,416.0 | 0.357 | 2 | - | - |
'Get properties with dictionary' | 14.5359 ns | 0.1625 ns | 0.1440 ns | 0.0385 ns | 14.2815 ns | 14.4192 ns | 14.5331 ns | 14.6461 ns | 14.7799 ns | 68,795,279.0 | 0.387 | 3 | - | - |
'Get properties without cache' | 37.5307 ns | 0.5671 ns | 0.5027 ns | 0.1344 ns | 36.8879 ns | 37.0765 ns | 37.4976 ns | 37.9777 ns | 38.3430 ns | 26,644,839.4 | 1.000 | 4 | 0.0063 | 40 B |
Regex Or Contains
Method | Mean | Error | StdDev | Median | Ratio | RatioSD | Allocated |
---|---|---|---|---|---|---|---|
Contains | 151.8 ns | 1.60 ns | 1.42 ns | 151.5 ns | 0.04 | 0.00 | - |
ContainsIgnoreCase | 3,505.7 ns | 59.32 ns | 55.48 ns | 3,510.4 ns | 1.00 | 0.00 | - |
RegexCall | 3,069.0 ns | 65.36 ns | 181.12 ns | 3,009.4 ns | 0.93 | 0.09 | - |
RegexCallIgnoreCase | 8,941.6 ns | 107.94 ns | 95.68 ns | 8,948.9 ns | 2.55 | 0.05 | - |
Span Vs Array
Method | Count | Mean | Error | StdDev | StdErr | Median | Min | Q1 | Q3 | Max | Op/s | Ratio | RatioSD | Rank | Gen 0 | Gen 1 | Gen 2 | Allocated |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Array | 100 | 73.16 ns | 3.172 ns | 9.351 ns | 0.935 ns | 67.31 ns | 64.32 ns | 65.96 ns | 80.90 ns | 97.95 ns | 13,668,734.9 | 1.00 | 0.00 | 2 | 0.0675 | - | - | 424 B |
'Array With Pointers' | 100 | 50.70 ns | 1.029 ns | 1.101 ns | 0.259 ns | 51.02 ns | 48.45 ns | 50.14 ns | 51.39 ns | 52.62 ns | 19,725,429.5 | 0.58 | 0.04 | 1 | 0.0675 | - | - | 424 B |
Span | 100 | 67.91 ns | 1.355 ns | 1.762 ns | 0.360 ns | 67.43 ns | 65.73 ns | 66.42 ns | 69.18 ns | 71.27 ns | 14,725,139.0 | 0.80 | 0.06 | 2 | 0.0675 | - | - | 424 B |
'Span With Slice' | 100 | 74.46 ns | 2.606 ns | 7.562 ns | 0.768 ns | 70.55 ns | 67.81 ns | 68.92 ns | 78.94 ns | 97.70 ns | 13,429,341.6 | 1.02 | 0.10 | 3 | 0.0675 | - | - | 424 B |
Array | 1000 | 614.53 ns | 5.780 ns | 5.124 ns | 1.370 ns | 615.30 ns | 603.89 ns | 611.33 ns | 618.40 ns | 620.97 ns | 1,627,268.1 | 1.00 | 0.00 | 2 | 0.6409 | - | - | 4,024 B |
'Array With Pointers' | 1000 | 417.96 ns | 8.317 ns | 8.899 ns | 2.097 ns | 414.37 ns | 407.85 ns | 411.60 ns | 423.61 ns | 439.18 ns | 2,392,581.3 | 0.68 | 0.02 | 1 | 0.6413 | - | - | 4,024 B |
Span | 1000 | 610.16 ns | 8.020 ns | 7.502 ns | 1.937 ns | 610.94 ns | 594.91 ns | 606.90 ns | 614.70 ns | 622.37 ns | 1,638,909.3 | 0.99 | 0.02 | 2 | 0.6409 | - | - | 4,024 B |
'Span With Slice' | 1000 | 599.40 ns | 11.889 ns | 11.121 ns | 2.871 ns | 596.80 ns | 582.80 ns | 593.06 ns | 607.05 ns | 625.11 ns | 1,668,345.7 | 0.97 | 0.02 | 2 | 0.6409 | - | - | 4,024 B |
Array | 10000 | 6,551.54 ns | 125.110 ns | 104.473 ns | 28.976 ns | 6,516.17 ns | 6,418.85 ns | 6,472.31 ns | 6,588.51 ns | 6,774.45 ns | 152,635.9 | 1.00 | 0.00 | 2 | 6.3248 | - | - | 40,024 B |
'Array With Pointers' | 10000 | 4,172.81 ns | 35.655 ns | 29.773 ns | 8.258 ns | 4,166.95 ns | 4,123.72 ns | 4,157.48 ns | 4,196.96 ns | 4,218.52 ns | 239,646.5 | 0.64 | 0.01 | 1 | 6.3248 | - | - | 40,024 B |
Span | 10000 | 6,798.20 ns | 73.786 ns | 168.049 ns | 21.342 ns | 6,755.40 ns | 6,607.03 ns | 6,685.07 ns | 6,881.05 ns | 7,425.85 ns | 147,097.8 | 1.06 | 0.04 | 3 | 6.3248 | - | - | 40,024 B |
'Span With Slice' | 10000 | 6,527.40 ns | 113.685 ns | 106.341 ns | 27.457 ns | 6,509.15 ns | 6,394.84 ns | 6,440.68 ns | 6,570.18 ns | 6,737.36 ns | 153,200.3 | 1.00 | 0.02 | 2 | 6.3248 | - | - | 40,024 B |
Array | 100000 | 154,037.63 ns | 2,382.690 ns | 2,228.770 ns | 575.466 ns | 154,262.13 ns | 150,484.38 ns | 152,915.36 ns | 155,181.75 ns | 157,903.76 ns | 6,491.9 | 1.00 | 0.00 | 3 | 124.7559 | 124.7559 | 124.7559 | 400,024 B |
'Array With Pointers' | 100000 | 135,354.12 ns | 2,624.042 ns | 2,577.160 ns | 644.290 ns | 135,428.96 ns | 131,184.72 ns | 133,563.78 ns | 137,276.57 ns | 140,092.19 ns | 7,388.0 | 0.88 | 0.02 | 1 | 124.7559 | 124.7559 | 124.7559 | 400,024 B |
Span | 100000 | 156,877.26 ns | 3,018.657 ns | 6,996.197 ns | 874.525 ns | 155,535.31 ns | 149,645.68 ns | 153,576.82 ns | 157,187.54 ns | 183,059.67 ns | 6,374.4 | 1.05 | 0.09 | 3 | 124.7559 | 124.7559 | 124.7559 | 400,024 B |
'Span With Slice' | 100000 | 147,434.08 ns | 2,228.140 ns | 1,975.188 ns | 527.891 ns | 147,251.45 ns | 144,633.40 ns | 145,783.25 ns | 148,958.80 ns | 151,034.30 ns | 6,782.7 | 0.96 | 0.02 | 2 | 124.7559 | 124.7559 | 124.7559 | 400,024 B |
Stack Alloc Vs New
Method | Count | Mean | Error | StdDev | StdErr | Median | Min | Q1 | Q3 | Max | Op/s | Ratio | RatioSD | Rank | Gen 0 | Gen 1 | Gen 2 | Allocated |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
New | 100 | 143.4 ns | 1.28 ns | 1.13 ns | 0.30 ns | 143.3 ns | 141.1 ns | 143.0 ns | 144.1 ns | 145.6 ns | 6,973,890.5 | 1.02 | 0.05 | 2 | 0.0675 | - | - | 424 B |
'Stackalloc struct' | 100 | 140.5 ns | 1.47 ns | 1.38 ns | 0.36 ns | 140.4 ns | 139.1 ns | 139.2 ns | 141.2 ns | 143.4 ns | 7,117,229.7 | 1.00 | 0.05 | 1 | - | - | - | - |
Stackalloc | 100 | 142.7 ns | 2.88 ns | 8.41 ns | 0.85 ns | 138.6 ns | 135.0 ns | 136.6 ns | 150.3 ns | 169.6 ns | 7,009,266.6 | 1.00 | 0.00 | 1 | - | - | - | - |
New | 1000 | 1,478.5 ns | 14.88 ns | 12.43 ns | 3.45 ns | 1,481.0 ns | 1,453.5 ns | 1,470.4 ns | 1,485.4 ns | 1,495.2 ns | 676,342.3 | 1.03 | 0.01 | 2 | 0.6409 | - | - | 4,024 B |
'Stackalloc struct' | 1000 | 1,455.4 ns | 13.01 ns | 12.17 ns | 3.14 ns | 1,455.4 ns | 1,424.1 ns | 1,451.4 ns | 1,462.5 ns | 1,473.2 ns | 687,080.7 | 1.01 | 0.01 | 1 | - | - | - | - |
Stackalloc | 1000 | 1,435.3 ns | 16.53 ns | 15.46 ns | 3.99 ns | 1,432.2 ns | 1,410.4 ns | 1,424.6 ns | 1,444.0 ns | 1,466.5 ns | 696,730.5 | 1.00 | 0.00 | 1 | - | - | - | - |
New | 10000 | 12,860.8 ns | 129.29 ns | 120.94 ns | 31.23 ns | 12,864.8 ns | 12,637.5 ns | 12,790.0 ns | 12,939.1 ns | 13,059.4 ns | 77,755.6 | 0.90 | 0.01 | 1 | 6.3171 | - | - | 40,024 B |
'Stackalloc struct' | 10000 | 14,257.3 ns | 126.57 ns | 118.39 ns | 30.57 ns | 14,269.3 ns | 14,105.8 ns | 14,149.6 ns | 14,337.4 ns | 14,471.6 ns | 70,139.5 | 1.00 | 0.01 | 2 | - | - | - | - |
Stackalloc | 10000 | 14,239.2 ns | 109.09 ns | 102.05 ns | 26.35 ns | 14,244.6 ns | 14,089.3 ns | 14,170.2 ns | 14,303.5 ns | 14,460.4 ns | 70,228.6 | 1.00 | 0.00 | 2 | - | - | - | - |
New | 100000 | 234,425.9 ns | 2,515.29 ns | 2,229.74 ns | 595.92 ns | 233,713.2 ns | 231,161.0 ns | 233,112.9 ns | 236,207.2 ns | 237,829.7 ns | 4,265.7 | 1.78 | 0.02 | 2 | 124.7559 | 124.7559 | 124.7559 | 400,024 B |
'Stackalloc struct' | 100000 | 131,723.4 ns | 741.38 ns | 619.08 ns | 171.70 ns | 131,718.9 ns | 131,048.5 ns | 131,283.6 ns | 132,069.6 ns | 133,325.4 ns | 7,591.7 | 1.00 | 0.01 | 1 | - | - | - | - |
Stackalloc | 100000 | 131,612.3 ns | 1,164.57 ns | 1,089.34 ns | 281.27 ns | 131,801.0 ns | 129,995.8 ns | 130,720.8 ns | 132,530.8 ns | 133,822.0 ns | 7,598.1 | 1.00 | 0.00 | 1 | - | - | - | - |
Static Constructor Tests
Method | Count | Mean | Error | StdDev | StdErr | Min | Q1 | Median | Q3 | Max | Op/s | Ratio | RatioSD | Rank | Allocated |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
'No constructor' | 100 | 32.77 ns | 0.510 ns | 0.477 ns | 0.123 ns | 31.92 ns | 32.44 ns | 32.68 ns | 32.99 ns | 33.65 ns | 30,515,230.8 | 1.00 | 0.00 | 1 | - |
'With constructor' | 100 | 126.27 ns | 1.161 ns | 1.030 ns | 0.275 ns | 124.81 ns | 125.72 ns | 126.16 ns | 126.70 ns | 128.58 ns | 7,919,742.0 | 3.85 | 0.07 | 2 | - |
'No constructor' | 1000 | 250.09 ns | 3.900 ns | 3.648 ns | 0.942 ns | 246.62 ns | 247.28 ns | 248.62 ns | 252.67 ns | 257.80 ns | 3,998,585.5 | 1.00 | 0.00 | 1 | - |
'With constructor' | 1000 | 1,240.69 ns | 21.862 ns | 34.675 ns | 6.036 ns | 1,200.62 ns | 1,217.21 ns | 1,226.64 ns | 1,258.69 ns | 1,329.77 ns | 806,005.5 | 5.06 | 0.14 | 2 | - |
'No constructor' | 10000 | 2,447.32 ns | 25.048 ns | 22.204 ns | 5.934 ns | 2,416.30 ns | 2,429.35 ns | 2,445.99 ns | 2,464.96 ns | 2,482.47 ns | 408,609.7 | 1.00 | 0.00 | 1 | - |
'With constructor' | 10000 | 12,091.98 ns | 83.886 ns | 74.363 ns | 19.874 ns | 11,920.42 ns | 12,052.54 ns | 12,116.31 ns | 12,140.61 ns | 12,172.37 ns | 82,699.5 | 4.94 | 0.06 | 2 | - |
'No constructor' | 100000 | 24,348.32 ns | 196.234 ns | 173.956 ns | 46.492 ns | 23,947.97 ns | 24,288.56 ns | 24,367.23 ns | 24,452.35 ns | 24,600.28 ns | 41,070.6 | 1.00 | 0.00 | 1 | - |
'With constructor' | 100000 | 122,337.54 ns | 1,058.974 ns | 990.565 ns | 255.763 ns | 120,918.95 ns | 121,576.46 ns | 122,283.19 ns | 122,918.75 ns | 124,375.96 ns | 8,174.1 | 5.02 | 0.05 | 2 | - |
String Concat Tests
Method | Count | Mean | Error | StdDev | StdErr | Median | Min | Q1 | Q3 | Max | Op/s | Ratio | Rank | Gen 0 | Gen 1 | Gen 2 | Allocated |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
'char list concat' | 100 | 801.7 ns | 9.05 ns | 8.47 ns | 2.19 ns | 803.3 ns | 790.0 ns | 794.5 ns | 808.4 ns | 813.7 ns | 1,247,335.8591 | 0.26 | 2 | 0.6227 | 0.0038 | - | 4 KB |
StringBuilder | 100 | 737.6 ns | 9.23 ns | 7.71 ns | 2.14 ns | 738.5 ns | 722.4 ns | 734.5 ns | 740.0 ns | 753.8 ns | 1,355,751.4270 | 0.24 | 1 | 0.3633 | 0.0029 | - | 2 KB |
'string concat' | 100 | 3,036.7 ns | 40.54 ns | 35.94 ns | 9.61 ns | 3,032.3 ns | 2,968.3 ns | 3,018.5 ns | 3,062.3 ns | 3,106.6 ns | 329,301.3121 | 1.00 | 3 | 6.8169 | 0.0343 | - | 42 KB |
'char list concat' | 1000 | 6,834.4 ns | 98.34 ns | 215.85 ns | 28.34 ns | 6,780.7 ns | 6,519.5 ns | 6,713.8 ns | 6,923.4 ns | 7,567.4 ns | 146,318.0404 | 0.03 | 2 | 5.2109 | 0.3204 | - | 32 KB |
StringBuilder | 1000 | 6,105.8 ns | 102.14 ns | 242.75 ns | 29.66 ns | 6,042.4 ns | 5,901.9 ns | 5,966.3 ns | 6,133.3 ns | 7,122.0 ns | 163,777.6380 | 0.03 | 1 | 2.6855 | 0.1526 | - | 16 KB |
'string concat' | 1000 | 217,358.0 ns | 4,048.20 ns | 3,786.69 ns | 977.72 ns | 216,830.1 ns | 211,904.0 ns | 215,052.6 ns | 219,287.0 ns | 224,946.8 ns | 4,600.7046 | 1.00 | 3 | 641.6016 | 29.7852 | - | 3,934 KB |
'char list concat' | 10000 | 102,902.0 ns | 800.27 ns | 709.42 ns | 189.60 ns | 102,676.5 ns | 101,661.3 ns | 102,517.8 ns | 103,573.3 ns | 104,004.3 ns | 9,717.9881 | 0.004 | 2 | 83.2520 | 41.6260 | 41.6260 | 413 KB |
StringBuilder | 10000 | 67,368.3 ns | 2,861.10 ns | 8,254.94 ns | 842.52 ns | 66,872.7 ns | 56,435.6 ns | 60,443.4 ns | 72,460.6 ns | 92,378.6 ns | 14,843.7782 | 0.003 | 1 | 25.6348 | 8.4839 | - | 158 KB |
'string concat' | 10000 | 23,154,501.4 ns | 454,588.02 ns | 968,764.13 ns | 130,628.13 ns | 22,853,118.8 ns | 21,947,287.5 ns | 22,558,767.2 ns | 23,691,192.2 ns | 26,056,200.0 ns | 43.1881 | 1.000 | 3 | 63375.0000 | 9937.5000 | - | 390,898 KB |
'char list concat' | 100000 | 964,097.5 ns | 18,124.53 ns | 17,800.72 ns | 4,450.18 ns | 968,823.9 ns | 936,612.6 ns | 947,185.3 ns | 978,820.7 ns | 985,947.4 ns | 1,037.2395 | 0.000 | 2 | 1019.5313 | 1000.0000 | 998.0469 | 3,611 KB |
StringBuilder | 100000 | 779,260.0 ns | 15,560.94 ns | 12,994.09 ns | 3,603.91 ns | 777,503.3 ns | 759,001.7 ns | 769,611.1 ns | 789,385.2 ns | 799,055.7 ns | 1,283.2688 | 0.000 | 1 | 249.0234 | 249.0234 | 249.0234 | 1,567 KB |
'string concat' | 100000 | 6,190,556,745.0 ns | 370,598,118.37 ns | 1,092,716,913.58 ns | 109,271,691.36 ns | 6,491,308,900.0 ns | 3,300,983,200.0 ns | 5,275,894,375.0 ns | 7,045,883,125.0 ns | 8,453,799,700.0 ns | 0.1615 | 1.000 | 3 | 8700000.0000 | 8640000.0000 | 8629000.0000 | 39,064,865 KB |
String Formatting
Method | Mean | Error | StdDev | StdErr | Median | Min | Q1 | Q3 | Max | Op/s | Ratio | RatioSD | Rank | Gen 0 | Allocated |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
StringBuilder | 1,021.2 ns | 20.31 ns | 18.00 ns | 4.81 ns | 1,020.3 ns | 987.2 ns | 1,009.7 ns | 1,031.3 ns | 1,056.3 ns | 979,230.9 | 2.11 | 0.05 | 5 | 0.1068 | 680 B |
'string concat' | 362.1 ns | 7.18 ns | 13.66 ns | 2.04 ns | 356.5 ns | 349.6 ns | 353.1 ns | 366.3 ns | 409.4 ns | 2,761,791.5 | 0.76 | 0.04 | 1 | 0.0443 | 280 B |
string.format | 482.8 ns | 5.68 ns | 5.32 ns | 1.37 ns | 481.7 ns | 475.9 ns | 479.1 ns | 486.0 ns | 495.6 ns | 2,071,049.8 | 1.00 | 0.00 | 2 | 0.0324 | 208 B |
'string interpolation' | 638.6 ns | 26.69 ns | 77.43 ns | 7.86 ns | 633.1 ns | 476.4 ns | 604.7 ns | 686.7 ns | 808.0 ns | 1,565,905.3 | 1.09 | 0.16 | 4 | 0.0324 | 208 B |
string.replace | 505.1 ns | 9.98 ns | 22.74 ns | 2.89 ns | 496.3 ns | 484.6 ns | 489.4 ns | 510.7 ns | 575.9 ns | 1,979,675.2 | 1.12 | 0.04 | 3 | 0.0687 | 432 B |
String Format Vs String Builder
Method | Mean | Error | StdDev | Median | Ratio | RatioSD | Gen 0 | Allocated |
---|---|---|---|---|---|---|---|---|
StringBuilder | 149.24 ns | 7.370 ns | 21.381 ns | 151.22 ns | 0.61 | 0.02 | 0.0739 | 464 B |
StringBuilderPool | 70.58 ns | 2.142 ns | 5.972 ns | 67.94 ns | 0.43 | 0.02 | 0.0191 | 120 B |
StringFormat | 197.08 ns | 2.688 ns | 2.098 ns | 197.47 ns | 1.00 | 0.00 | 0.0279 | 176 B |
String Replace
Method | Count | Mean | Error | StdDev | Ratio | RatioSD | Gen 0 | Gen 1 | Gen 2 | Allocated |
---|---|---|---|---|---|---|---|---|---|---|
StringBuilderPools | 1 | 615.8 μs | 28.28 μs | 83.40 μs | 1.00 | 0.00 | 153.3203 | 153.3203 | 153.3203 | 512 KB |
StringConcat | 1 | 178.4 μs | 3.48 μs | 3.73 μs | 0.26 | 0.02 | 83.2520 | 83.2520 | 83.2520 | 256 KB |
StringBuilderPools | 10 | 4,002.0 μs | 38.13 μs | 33.80 μs | 1.00 | 0.00 | 148.4375 | 148.4375 | 148.4375 | 512 KB |
StringConcat | 10 | 222.3 μs | 4.43 μs | 7.28 μs | 0.06 | 0.00 | 83.2520 | 83.2520 | 83.2520 | 256 KB |
StringBuilderPools | 100 | 39,463.0 μs | 788.76 μs | 1,025.61 μs | 1.000 | 0.00 | 100.0000 | 100.0000 | 100.0000 | 512 KB |
StringConcat | 100 | 180.7 μs | 3.54 μs | 4.07 μs | 0.005 | 0.00 | 83.2520 | 83.2520 | 83.2520 | 256 KB |
StringBuilderPools | 1000 | 388,446.6 μs | 2,353.10 μs | 2,085.96 μs | 1.000 | 0.00 | - | - | - | 512 KB |
StringConcat | 1000 | 222.2 μs | 4.43 μs | 9.63 μs | 0.001 | 0.00 | 83.2520 | 83.2520 | 83.2520 | 256 KB |
StringBuilderPools | 10000 | 3,941,443.4 μs | 52,848.96 μs | 41,260.99 μs | 1.000 | 0.00 | - | - | - | 512 KB |
StringConcat | 10000 | 216.6 μs | 3.00 μs | 2.66 μs | 0.000 | 0.00 | 83.2520 | 83.2520 | 83.2520 | 256 KB |
String Substring
Method | Mean | Error | StdDev | StdErr | Median | Min | Q1 | Q3 | Max | Op/s | Ratio | RatioSD | Rank | Gen 0 | Allocated |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Span.Slice | 17.29 ns | 1.255 ns | 3.701 ns | 0.370 ns | 15.14 ns | 14.248 ns | 14.53 ns | 20.09 ns | 28.21 ns | 57,842,293.8 | 1.49 | 0.31 | 2 | 0.0140 | 88 B |
String.Substring | 11.84 ns | 0.539 ns | 1.512 ns | 0.158 ns | 11.41 ns | 8.608 ns | 10.83 ns | 12.36 ns | 16.03 ns | 84,425,176.5 | 1.00 | 0.00 | 1 | 0.0064 | 40 B |
String Trim Tests
Method | Mean | Error | StdDev | StdErr | Median | Min | Q1 | Q3 | Max | Op/s | Ratio | RatioSD | Rank | Gen 0 | Allocated |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
'String substring trim' | 13.82 ns | 0.287 ns | 0.254 ns | 0.068 ns | 13.89 ns | 13.47 ns | 13.59 ns | 14.07 ns | 14.12 ns | 72,350,765.9 | 0.91 | 0.03 | 1 | 0.0089 | 56 B |
String.Trim() | 20.23 ns | 1.792 ns | 5.285 ns | 0.528 ns | 17.92 ns | 14.71 ns | 15.83 ns | 24.81 ns | 38.03 ns | 49,436,478.6 | 1.00 | 0.00 | 2 | 0.0089 | 56 B |
String.TrimStart().TrimEnd() | 37.56 ns | 2.013 ns | 5.809 ns | 0.593 ns | 36.23 ns | 30.16 ns | 32.85 ns | 40.85 ns | 53.64 ns | 26,622,339.7 | 2.01 | 0.60 | 3 | 0.0178 | 112 B |
Vector Vs Byte Math
Method | Count | Mean | Error | StdDev | StdErr | Median | Min | Q1 | Q3 | Max | Op/s | Ratio | RatioSD | Rank | Gen 0 | Gen 1 | Gen 2 | Allocated |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
'byte[] test' | 100 | 287.49 ns | 5.615 ns | 6.008 ns | 1.416 ns | 286.18 ns | 280.40 ns | 283.19 ns | 289.70 ns | 299.51 ns | 3,478,324.9 | 1.00 | 0.00 | 6 | 0.0672 | - | - | 424 B |
'Struct test' | 100 | 188.09 ns | 7.605 ns | 22.303 ns | 2.242 ns | 176.09 ns | 168.80 ns | 171.83 ns | 204.45 ns | 249.11 ns | 5,316,740.6 | 0.77 | 0.04 | 5 | 0.0675 | - | - | 424 B |
'Struct UInt test' | 100 | 90.79 ns | 1.803 ns | 1.686 ns | 0.435 ns | 90.15 ns | 88.99 ns | 89.64 ns | 91.64 ns | 95.13 ns | 11,013,981.8 | 0.32 | 0.01 | 4 | 0.0675 | - | - | 424 B |
'Vector<byte> test' | 100 | 67.84 ns | 3.805 ns | 10.856 ns | 1.120 ns | 65.22 ns | 49.83 ns | 62.03 ns | 73.06 ns | 95.96 ns | 14,741,280.9 | 0.29 | 0.03 | 3 | 0.1351 | - | - | 848 B |
'Vector<float> test' | 100 | 44.27 ns | 0.707 ns | 0.662 ns | 0.171 ns | 44.31 ns | 43.27 ns | 43.68 ns | 44.79 ns | 45.38 ns | 22,586,837.8 | 0.15 | 0.00 | 1 | 0.1351 | 0.0001 | - | 848 B |
'Vector<uint> test' | 100 | 55.13 ns | 3.042 ns | 8.873 ns | 0.896 ns | 57.37 ns | 43.32 ns | 45.10 ns | 60.45 ns | 76.53 ns | 18,138,891.5 | 0.18 | 0.02 | 2 | 0.1351 | 0.0001 | - | 848 B |
'byte[] test' | 1000 | 2,867.65 ns | 135.720 ns | 398.044 ns | 40.005 ns | 2,911.03 ns | 2,163.50 ns | 2,770.42 ns | 3,115.18 ns | 3,641.63 ns | 348,717.3 | 1.00 | 0.00 | 4 | 0.6409 | - | - | 4,024 B |
'Struct test' | 1000 | 1,643.34 ns | 20.206 ns | 18.901 ns | 4.880 ns | 1,641.17 ns | 1,616.40 ns | 1,631.08 ns | 1,655.60 ns | 1,674.50 ns | 608,518.0 | 0.73 | 0.02 | 3 | 0.6409 | - | - | 4,024 B |
'Struct UInt test' | 1000 | 662.96 ns | 12.761 ns | 12.533 ns | 3.133 ns | 661.30 ns | 643.36 ns | 654.12 ns | 669.22 ns | 693.29 ns | 1,508,393.7 | 0.30 | 0.01 | 2 | 0.6409 | - | - | 4,024 B |
'Vector<byte> test' | 1000 | 488.45 ns | 27.879 ns | 81.765 ns | 8.218 ns | 494.48 ns | 387.45 ns | 405.13 ns | 544.30 ns | 746.28 ns | 2,047,283.0 | 0.18 | 0.05 | 1 | 1.2827 | 0.0095 | - | 8,048 B |
'Vector<float> test' | 1000 | 472.68 ns | 27.305 ns | 80.508 ns | 8.051 ns | 490.16 ns | 369.46 ns | 389.75 ns | 523.63 ns | 681.33 ns | 2,115,612.6 | 0.17 | 0.04 | 1 | 1.2827 | 0.0095 | - | 8,048 B |
'Vector<uint> test' | 1000 | 481.83 ns | 22.576 ns | 66.565 ns | 6.656 ns | 487.25 ns | 363.99 ns | 439.16 ns | 527.29 ns | 649.40 ns | 2,075,432.0 | 0.17 | 0.04 | 1 | 1.2827 | 0.0095 | - | 8,048 B |
'byte[] test' | 10000 | 27,413.07 ns | 1,045.791 ns | 3,034.029 ns | 308.059 ns | 27,637.41 ns | 20,938.08 ns | 26,574.79 ns | 28,966.79 ns | 33,562.31 ns | 36,479.0 | 1.00 | 0.00 | 5 | 6.3171 | - | - | 40,024 B |
'Struct test' | 10000 | 15,160.47 ns | 165.819 ns | 155.107 ns | 40.048 ns | 15,118.60 ns | 14,975.96 ns | 15,044.60 ns | 15,242.26 ns | 15,527.11 ns | 65,961.0 | 0.68 | 0.07 | 4 | 6.3171 | - | - | 40,024 B |
'Struct UInt test' | 10000 | 5,894.09 ns | 115.242 ns | 145.745 ns | 30.390 ns | 5,833.12 ns | 5,678.86 ns | 5,794.75 ns | 5,954.57 ns | 6,272.69 ns | 169,661.6 | 0.24 | 0.04 | 2 | 6.3248 | - | - | 40,024 B |
'Vector<byte> test' | 10000 | 3,927.80 ns | 176.057 ns | 490.777 ns | 51.732 ns | 3,727.47 ns | 3,353.76 ns | 3,574.11 ns | 4,216.87 ns | 5,537.29 ns | 254,595.7 | 0.14 | 0.02 | 1 | 12.6572 | - | - | 80,048 B |
'Vector<float> test' | 10000 | 13,235.00 ns | 1,173.470 ns | 3,460.002 ns | 346.000 ns | 13,978.66 ns | 7,334.00 ns | 9,855.84 ns | 16,233.18 ns | 20,473.46 ns | 75,557.2 | 0.50 | 0.15 | 4 | 12.6343 | - | - | 80,048 B |
'Vector<uint> test' | 10000 | 8,298.92 ns | 613.609 ns | 1,809.241 ns | 180.924 ns | 7,828.34 ns | 5,720.37 ns | 6,830.11 ns | 9,611.42 ns | 12,649.95 ns | 120,497.6 | 0.31 | 0.10 | 3 | 12.6495 | - | - | 80,048 B |
'byte[] test' | 100000 | 621,913.71 ns | 34,472.370 ns | 100,557.522 ns | 10,157.844 ns | 618,224.07 ns | 438,658.59 ns | 542,686.69 ns | 695,798.56 ns | 864,300.10 ns | 1,607.9 | 1.00 | 0.00 | 5 | 124.0234 | 124.0234 | 124.0234 | 400,024 B |
'Struct test' | 100000 | 509,432.10 ns | 22,018.440 ns | 63,175.033 ns | 6,481.622 ns | 491,645.31 ns | 427,414.84 ns | 461,427.15 ns | 537,925.39 ns | 667,493.07 ns | 1,963.0 | 0.84 | 0.20 | 4 | 124.0234 | 124.0234 | 124.0234 | 400,024 B |
'Struct UInt test' | 100000 | 403,169.37 ns | 15,520.182 ns | 45,761.605 ns | 4,576.161 ns | 398,249.83 ns | 310,292.63 ns | 373,467.46 ns | 435,169.09 ns | 526,603.71 ns | 2,480.3 | 0.66 | 0.14 | 3 | 124.5117 | 124.5117 | 124.5117 | 400,024 B |
'Vector<byte> test' | 100000 | 431,116.78 ns | 38,800.963 ns | 114,405.515 ns | 11,440.552 ns | 424,939.99 ns | 293,917.04 ns | 316,041.16 ns | 526,480.85 ns | 717,953.08 ns | 2,319.6 | 0.71 | 0.21 | 3 | 249.5117 | 249.5117 | 249.5117 | 800,048 B |
'Vector<float> test' | 100000 | 348,110.99 ns | 20,443.516 ns | 58,656.280 ns | 6,018.007 ns | 324,133.98 ns | 284,980.52 ns | 307,034.45 ns | 362,237.35 ns | 498,055.86 ns | 2,872.6 | 0.58 | 0.16 | 2 | 249.5117 | 249.5117 | 249.5117 | 800,048 B |
'Vector<uint> test' | 100000 | 286,964.06 ns | 5,595.130 ns | 6,871.322 ns | 1,464.971 ns | 284,693.70 ns | 279,010.89 ns | 281,912.99 ns | 292,465.49 ns | 304,550.49 ns | 3,484.8 | 0.52 | 0.10 | 1 | 249.5117 | 249.5117 | 249.5117 | 800,048 B |