Skip to content

Instantly share code, notes, and snippets.

@hez2010
Created August 23, 2021 11:01
Show Gist options
  • Save hez2010/3ea04df849b300ec1eb61c5f640c8c55 to your computer and use it in GitHub Desktop.
Save hez2010/3ea04df849b300ec1eb61c5f640c8c55 to your computer and use it in GitHub Desktop.
osu.Framework Benchmark Results

Config

BenchmarkDotNet=v0.13.1, OS=ubuntu 20.04
Intel Xeon Platinum 8171M CPU 2.60GHz, 1 CPU, 2 logical and 2 physical cores
.NET SDK=6.0.100-rc.2.21420.30
  [Host]            : .NET 5.0.9 (5.0.921.35908), X64 RyuJIT
  .NET 5.0          : .NET 5.0.9 (5.0.921.35908), X64 RyuJIT
  .NET 6.0          : .NET 6.0.0 (6.0.21.42010), X64 RyuJIT
  .NET 6.0 PGO + EA : .NET 6.0.0 (6.0.21.42010), X64 RyuJIT, EnvVars(DOTNET_JitObjectStackAllocation=1,DOTNET_TieredPgo=1,DOTNET_ReadyToRun=0,DOTNET_TC_QuickJitForLoops=1)

IterationCount=3  LaunchCount=1  WarmupCount=3  

BenchmarkAggregateBindable

Method Job Runtime Mean Error StdDev Ratio RatioSD Gen 0 Allocated
AggregateRecalculation .NET 5.0 .NET 5.0 1.623 ms 0.7220 ms 0.0396 ms 1.00 0.00 9.7656 213 KB
AggregateRecalculation .NET 6.0 .NET 6.0 1.489 ms 0.4055 ms 0.0222 ms 0.92 0.04 9.7656 213 KB
AggregateRecalculation .NET 6.0 PGO + EA .NET 6.0 1.463 ms 0.0982 ms 0.0054 ms 0.90 0.02 9.7656 213 KB

BenchmarkBeginAbsoluteSequence

Method Job Runtime Mean Error StdDev Ratio RatioSD Gen 0 Allocated
NonRecursive .NET 5.0 .NET 5.0 1.042 ms 0.0392 ms 0.0021 ms 1.00 0.00 - 194 B
NonRecursive .NET 6.0 .NET 6.0 1.141 ms 0.1366 ms 0.0075 ms 1.10 0.01 - 198 B
NonRecursive .NET 6.0 PGO + EA .NET 6.0 1.106 ms 0.3584 ms 0.0196 ms 1.06 0.02 - 198 B
Recursive .NET 5.0 .NET 5.0 1.167 ms 0.2203 ms 0.0121 ms 1.00 0.00 1.9531 56,292 B
Recursive .NET 6.0 .NET 6.0 1.220 ms 0.0650 ms 0.0036 ms 1.04 0.01 1.9531 56,292 B
Recursive .NET 6.0 PGO + EA .NET 6.0 1.209 ms 0.3983 ms 0.0218 ms 1.04 0.03 1.9531 56,294 B
SlightlyNestedNonRecursive .NET 5.0 .NET 5.0 1.208 ms 0.4922 ms 0.0270 ms 1.00 0.00 - 196 B
SlightlyNestedNonRecursive .NET 6.0 .NET 6.0 1.132 ms 0.1236 ms 0.0068 ms 0.94 0.02 - 198 B
SlightlyNestedNonRecursive .NET 6.0 PGO + EA .NET 6.0 1.145 ms 0.2491 ms 0.0137 ms 0.95 0.02 - 199 B
SlightlyNestedRecursive .NET 5.0 .NET 5.0 1.308 ms 0.1942 ms 0.0106 ms 1.00 0.00 5.8594 120,332 B
SlightlyNestedRecursive .NET 6.0 .NET 6.0 1.265 ms 0.4235 ms 0.0232 ms 0.97 0.02 5.8594 120,332 B
SlightlyNestedRecursive .NET 6.0 PGO + EA .NET 6.0 1.337 ms 0.6149 ms 0.0337 ms 1.02 0.02 5.8594 120,334 B
VeryNestedNonRecursive .NET 5.0 .NET 5.0 1.142 ms 0.1480 ms 0.0081 ms 1.00 0.00 - 196 B
VeryNestedNonRecursive .NET 6.0 .NET 6.0 1.170 ms 0.3401 ms 0.0186 ms 1.02 0.01 - 196 B
VeryNestedNonRecursive .NET 6.0 PGO + EA .NET 6.0 1.155 ms 0.5129 ms 0.0281 ms 1.01 0.02 - 196 B
VeryNestedRecursive .NET 5.0 .NET 5.0 1.287 ms 0.1514 ms 0.0083 ms 1.00 0.00 1.9531 64,868 B
VeryNestedRecursive .NET 6.0 .NET 6.0 1.209 ms 0.1443 ms 0.0079 ms 0.94 0.01 1.9531 64,868 B
VeryNestedRecursive .NET 6.0 PGO + EA .NET 6.0 1.310 ms 0.5219 ms 0.0286 ms 1.02 0.02 1.9531 64,870 B

BenchmarkBindableInstantiation

Method Job Runtime Mean Error StdDev Ratio RatioSD
GetBoundCopyOld .NET 5.0 .NET 5.0 1,923.2 ns 245.7 ns 13.47 ns 1.00 0.00
GetBoundCopy .NET 5.0 .NET 5.0 1,041.4 ns 340.4 ns 18.66 ns 0.54 0.01
GetBoundCopyOld .NET 6.0 .NET 6.0 1,766.7 ns 241.9 ns 13.26 ns 0.92 0.01
GetBoundCopy .NET 6.0 .NET 6.0 1,004.9 ns 1,128.8 ns 61.87 ns 0.52 0.04
GetBoundCopyOld .NET 6.0 PGO + EA .NET 6.0 1,881.2 ns 444.9 ns 24.39 ns 0.98 0.01
GetBoundCopy .NET 6.0 PGO + EA .NET 6.0 947.7 ns 189.6 ns 10.39 ns 0.49 0.01

BenchmarkBindableList

Method Job Runtime Mean Error StdDev Ratio Allocated
Enumerate .NET 5.0 .NET 5.0 4.361 μs 0.6657 μs 0.0365 μs 1.00 -
Enumerate .NET 6.0 .NET 6.0 1.869 μs 0.7466 μs 0.0409 μs 0.43 -
Enumerate .NET 6.0 PGO + EA .NET 6.0 1.870 μs 0.4341 μs 0.0238 μs 0.43 -

BenchmarkButtonInput

Method Job Runtime count Mean Error StdDev Ratio RatioSD Gen 0 Gen 1 Allocated
Apply .NET 5.0 .NET 5.0 ? 1,410.3 ns 278.05 ns 15.24 ns 1.00 0.00 0.1450 - 2,712 B
Apply .NET 6.0 .NET 6.0 ? 1,384.4 ns 606.53 ns 33.25 ns 0.98 0.03 0.1411 - 2,656 B
Apply .NET 6.0 PGO + EA .NET 6.0 ? 1,383.5 ns 579.08 ns 31.74 ns 0.98 0.02 0.1411 0.0114 2,656 B
FromTwoStates .NET 5.0 .NET 5.0 1 383.8 ns 67.02 ns 3.67 ns 1.00 0.00 0.0377 - 704 B
FromTwoStates .NET 6.0 .NET 6.0 1 376.8 ns 93.44 ns 5.12 ns 0.98 0.01 0.0367 - 688 B
FromTwoStates .NET 6.0 PGO + EA .NET 6.0 1 373.9 ns 16.07 ns 0.88 ns 0.97 0.01 0.0367 - 688 B
FromTwoStates .NET 5.0 .NET 5.0 5 1,011.2 ns 419.75 ns 23.01 ns 1.00 0.00 0.0668 - 1,248 B
FromTwoStates .NET 6.0 .NET 6.0 5 888.5 ns 165.52 ns 9.07 ns 0.88 0.02 0.0658 - 1,232 B
FromTwoStates .NET 6.0 PGO + EA .NET 6.0 5 906.7 ns 209.55 ns 11.49 ns 0.90 0.02 0.0658 - 1,232 B
FromTwoStates .NET 5.0 .NET 5.0 10 1,807.1 ns 710.21 ns 38.93 ns 1.00 0.00 0.1163 - 2,192 B
FromTwoStates .NET 6.0 .NET 6.0 10 1,546.9 ns 460.38 ns 25.23 ns 0.86 0.02 0.1163 - 2,176 B
FromTwoStates .NET 6.0 PGO + EA .NET 6.0 10 1,613.9 ns 346.54 ns 18.99 ns 0.89 0.01 0.1163 - 2,176 B
FromTwoStates .NET 5.0 .NET 5.0 50 6,590.9 ns 2,772.06 ns 151.95 ns 1.00 0.00 0.4425 - 8,272 B
FromTwoStates .NET 6.0 .NET 6.0 50 6,076.1 ns 2,817.47 ns 154.43 ns 0.92 0.03 0.4349 - 8,256 B
FromTwoStates .NET 6.0 PGO + EA .NET 6.0 50 5,819.2 ns 1,337.93 ns 73.34 ns 0.88 0.01 0.4349 0.0229 8,256 B

BenchmarkButtonStates

Method Job Runtime count Mean Error StdDev Ratio RatioSD Gen 0 Allocated
CreateNew .NET 5.0 .NET 5.0 ? 26.76 ns 13.184 ns 0.723 ns 1.00 0.00 0.0051 96 B
SetPressed .NET 5.0 .NET 5.0 ? 94.11 ns 63.270 ns 3.468 ns 3.52 0.20 0.0106 200 B
EnumerateEmptyDifferences .NET 5.0 .NET 5.0 ? 55.24 ns 8.131 ns 0.446 ns 2.07 0.07 0.0103 192 B
CreateNew .NET 6.0 .NET 6.0 ? 23.85 ns 13.183 ns 0.723 ns 0.89 0.04 0.0047 88 B
SetPressed .NET 6.0 .NET 6.0 ? 94.70 ns 35.575 ns 1.950 ns 3.54 0.08 0.0103 192 B
EnumerateEmptyDifferences .NET 6.0 .NET 6.0 ? 54.18 ns 16.380 ns 0.898 ns 2.03 0.06 0.0094 176 B
CreateNew .NET 6.0 PGO + EA .NET 6.0 ? 23.38 ns 13.883 ns 0.761 ns 0.87 0.05 0.0047 88 B
SetPressed .NET 6.0 PGO + EA .NET 6.0 ? 76.97 ns 65.925 ns 3.614 ns 2.87 0.06 0.0089 168 B
EnumerateEmptyDifferences .NET 6.0 PGO + EA .NET 6.0 ? 49.17 ns 22.920 ns 1.256 ns 1.84 0.09 0.0094 176 B
EnumerateBothDifferences .NET 5.0 .NET 5.0 1 334.68 ns 184.490 ns 10.113 ns ? ? 0.0324 608 B
EnumerateBothDifferences .NET 6.0 .NET 6.0 1 319.09 ns 118.869 ns 6.516 ns ? ? 0.0315 592 B
EnumerateBothDifferences .NET 6.0 PGO + EA .NET 6.0 1 338.00 ns 116.738 ns 6.399 ns ? ? 0.0315 592 B
EnumerateBothDifferences .NET 5.0 .NET 5.0 5 831.57 ns 48.714 ns 2.670 ns ? ? 0.0582 1,088 B
EnumerateBothDifferences .NET 6.0 .NET 6.0 5 829.98 ns 229.681 ns 12.590 ns ? ? 0.0572 1,072 B
EnumerateBothDifferences .NET 6.0 PGO + EA .NET 6.0 5 819.83 ns 204.675 ns 11.219 ns ? ? 0.0572 1,072 B
EnumerateBothDifferences .NET 5.0 .NET 5.0 10 1,595.10 ns 1,781.965 ns 97.675 ns ? ? 0.1030 1,952 B
EnumerateBothDifferences .NET 6.0 .NET 6.0 10 1,564.74 ns 525.705 ns 28.816 ns ? ? 0.1030 1,936 B
EnumerateBothDifferences .NET 6.0 PGO + EA .NET 6.0 10 1,412.49 ns 161.599 ns 8.858 ns ? ? 0.1030 1,936 B
EnumerateBothDifferences .NET 5.0 .NET 5.0 50 5,925.88 ns 644.980 ns 35.354 ns ? ? 0.3891 7,392 B
EnumerateBothDifferences .NET 6.0 .NET 6.0 50 5,610.16 ns 1,228.934 ns 67.362 ns ? ? 0.3891 7,376 B
EnumerateBothDifferences .NET 6.0 PGO + EA .NET 6.0 50 5,309.65 ns 706.833 ns 38.744 ns ? ? 0.3891 7,376 B

BenchmarkCompositeDrawableAllocations

Method Job Runtime Mean Error StdDev Ratio RatioSD Gen 0 Allocated
TestEmptyGameLoop .NET 5.0 .NET 5.0 8.903 μs 0.7601 μs 0.0417 μs 1.00 0.00 - -
TestEmptyGameLoop .NET 6.0 .NET 6.0 9.010 μs 1.8511 μs 0.1015 μs 1.01 0.01 - -
TestEmptyGameLoop .NET 6.0 PGO + EA .NET 6.0 8.998 μs 5.5263 μs 0.3029 μs 1.01 0.03 - -
TestAllocContainer .NET 5.0 .NET 5.0 10.133 μs 0.8851 μs 0.0485 μs 1.00 0.00 0.0763 1,664 B
TestAllocContainer .NET 6.0 .NET 6.0 9.440 μs 2.1729 μs 0.1191 μs 0.93 0.01 0.0763 1,664 B
TestAllocContainer .NET 6.0 PGO + EA .NET 6.0 10.363 μs 3.7879 μs 0.2076 μs 1.02 0.02 0.0763 1,664 B
TestLoadedContainer .NET 5.0 .NET 5.0 17.369 μs 1.6466 μs 0.0903 μs 1.00 0.00 0.0916 2,120 B
TestLoadedContainer .NET 6.0 .NET 6.0 16.417 μs 2.1673 μs 0.1188 μs 0.95 0.00 0.0916 2,016 B
TestLoadedContainer .NET 6.0 PGO + EA .NET 6.0 15.566 μs 0.7810 μs 0.0428 μs 0.90 0.00 0.0916 2,016 B
TestAllocSprite .NET 5.0 .NET 5.0 9.795 μs 1.4259 μs 0.0782 μs 1.00 0.00 0.0610 1,416 B
TestAllocSprite .NET 6.0 .NET 6.0 9.353 μs 0.3491 μs 0.0191 μs 0.95 0.01 0.0610 1,416 B
TestAllocSprite .NET 6.0 PGO + EA .NET 6.0 9.364 μs 1.1431 μs 0.0627 μs 0.96 0.00 0.0610 1,416 B
TestLoadedSprite .NET 5.0 .NET 5.0 14.614 μs 2.2536 μs 0.1235 μs 1.00 0.00 0.0763 1,696 B
TestLoadedSprite .NET 6.0 .NET 6.0 13.498 μs 2.1932 μs 0.1202 μs 0.92 0.01 0.0763 1,664 B
TestLoadedSprite .NET 6.0 PGO + EA .NET 6.0 13.407 μs 2.7403 μs 0.1502 μs 0.92 0.01 0.0763 1,664 B

BenchmarkDependencyContainer

Method Job Runtime Mean Error StdDev Ratio RatioSD Gen 0 Allocated
Get .NET 5.0 .NET 5.0 125.76 ns 45.736 ns 2.507 ns 1.00 0.00 - -
Get .NET 6.0 .NET 6.0 101.53 ns 5.420 ns 0.297 ns 0.81 0.01 - -
Get .NET 6.0 PGO + EA .NET 6.0 99.06 ns 5.907 ns 0.324 ns 0.79 0.02 - -
GetNullable .NET 5.0 .NET 5.0 217.66 ns 13.673 ns 0.749 ns 1.00 0.00 - -
GetNullable .NET 6.0 .NET 6.0 160.07 ns 21.302 ns 1.168 ns 0.74 0.01 - -
GetNullable .NET 6.0 PGO + EA .NET 6.0 168.14 ns 23.699 ns 1.299 ns 0.77 0.01 - -
InjectBdl .NET 5.0 .NET 5.0 857.27 ns 131.999 ns 7.235 ns 1.00 0.00 0.0048 96 B
InjectBdl .NET 6.0 .NET 6.0 663.71 ns 97.119 ns 5.323 ns 0.77 0.01 0.0019 48 B
InjectBdl .NET 6.0 PGO + EA .NET 6.0 720.16 ns 199.583 ns 10.940 ns 0.84 0.01 0.0019 48 B
InjectCached .NET 5.0 .NET 5.0 1,543.10 ns 61.860 ns 3.391 ns 1.00 0.00 0.0095 192 B
InjectCached .NET 6.0 .NET 6.0 1,188.08 ns 86.138 ns 4.722 ns 0.77 0.00 - -
InjectCached .NET 6.0 PGO + EA .NET 6.0 1,242.81 ns 961.469 ns 52.701 ns 0.81 0.03 - -

BenchmarkFontLoading

Method Job Runtime FetchCount Mean Error StdDev Ratio RatioSD Gen 0 Gen 1 Gen 2 Allocated
BenchmarkRawCachingReuse .NET 5.0 .NET 5.0 1 877.1 μs 264.0 μs 14.47 μs 0.02 0.00 27.3438 22.4609 17.5781 277 KB
BenchmarkRawCaching .NET 5.0 .NET 5.0 1 36,725.7 μs 31,839.7 μs 1,745.24 μs 1.00 0.00 - - - 394 KB
BenchmarkNoCache .NET 5.0 .NET 5.0 1 9,636.9 μs 2,363.0 μs 129.52 μs 0.26 0.01 1000.0000 1000.0000 1000.0000 8,380 KB
BenchmarkTimedExpiry .NET 5.0 .NET 5.0 1 9,526.8 μs 3,847.2 μs 210.88 μs 0.26 0.01 953.1250 953.1250 953.1250 8,419 KB
BenchmarkTimedExpiryMemoryPooling .NET 5.0 .NET 5.0 1 9,158.1 μs 5,574.7 μs 305.57 μs 0.25 0.02 953.1250 953.1250 953.1250 8,380 KB
BenchmarkRawCachingReuse .NET 6.0 .NET 6.0 1 856.8 μs 634.7 μs 34.79 μs 0.02 0.00 23.4375 17.5781 13.6719 277 KB
BenchmarkRawCaching .NET 6.0 .NET 6.0 1 36,684.8 μs 23,422.8 μs 1,283.88 μs 1.00 0.04 - - - 394 KB
BenchmarkNoCache .NET 6.0 .NET 6.0 1 8,897.2 μs 2,221.8 μs 121.79 μs 0.24 0.01 1000.0000 1000.0000 1000.0000 8,380 KB
BenchmarkTimedExpiry .NET 6.0 .NET 6.0 1 9,509.8 μs 11,529.7 μs 631.98 μs 0.26 0.03 953.1250 953.1250 953.1250 8,420 KB
BenchmarkTimedExpiryMemoryPooling .NET 6.0 .NET 6.0 1 9,105.1 μs 4,559.5 μs 249.92 μs 0.25 0.00 953.1250 953.1250 953.1250 8,381 KB
BenchmarkRawCachingReuse .NET 6.0 PGO + EA .NET 6.0 1 887.8 μs 609.8 μs 33.42 μs 0.02 0.00 27.3438 22.4609 17.5781 277 KB
BenchmarkRawCaching .NET 6.0 PGO + EA .NET 6.0 1 37,237.9 μs 24,714.1 μs 1,354.67 μs 1.01 0.03 - - - 390 KB
BenchmarkNoCache .NET 6.0 PGO + EA .NET 6.0 1 9,238.4 μs 3,227.9 μs 176.93 μs 0.25 0.01 1000.0000 1000.0000 1000.0000 8,380 KB
BenchmarkTimedExpiry .NET 6.0 PGO + EA .NET 6.0 1 9,598.9 μs 6,391.9 μs 350.36 μs 0.26 0.01 953.1250 953.1250 953.1250 8,420 KB
BenchmarkTimedExpiryMemoryPooling .NET 6.0 PGO + EA .NET 6.0 1 9,216.4 μs 5,912.7 μs 324.09 μs 0.25 0.01 953.1250 953.1250 953.1250 8,381 KB
BenchmarkRawCachingReuse .NET 5.0 .NET 5.0 10 1,872.4 μs 806.9 μs 44.23 μs 0.02 0.00 48.8281 42.9688 37.1094 403 KB
BenchmarkRawCaching .NET 5.0 .NET 5.0 10 113,245.0 μs 78,777.7 μs 4,318.07 μs 1.00 0.00 - - - 792 KB
BenchmarkNoCache .NET 5.0 .NET 5.0 10 51,655.6 μs 15,088.6 μs 827.06 μs 0.46 0.02 5500.0000 5500.0000 5500.0000 45,753 KB
BenchmarkTimedExpiry .NET 5.0 .NET 5.0 10 30,194.4 μs 4,604.0 μs 252.36 μs 0.27 0.01 843.7500 843.7500 843.7500 25,089 KB
BenchmarkTimedExpiryMemoryPooling .NET 5.0 .NET 5.0 10 30,396.4 μs 4,885.4 μs 267.78 μs 0.27 0.01 843.7500 843.7500 843.7500 24,986 KB
BenchmarkRawCachingReuse .NET 6.0 .NET 6.0 10 1,895.3 μs 949.5 μs 52.05 μs 0.02 0.00 39.0625 35.1563 27.3438 402 KB
BenchmarkRawCaching .NET 6.0 .NET 6.0 10 111,702.5 μs 85,518.4 μs 4,687.55 μs 0.99 0.05 - - - 794 KB
BenchmarkNoCache .NET 6.0 .NET 6.0 10 50,339.2 μs 18,397.9 μs 1,008.45 μs 0.45 0.03 5500.0000 5500.0000 5500.0000 45,757 KB
BenchmarkTimedExpiry .NET 6.0 .NET 6.0 10 30,053.6 μs 8,956.6 μs 490.94 μs 0.27 0.01 843.7500 843.7500 843.7500 25,090 KB
BenchmarkTimedExpiryMemoryPooling .NET 6.0 .NET 6.0 10 29,828.1 μs 8,242.7 μs 451.81 μs 0.26 0.01 843.7500 843.7500 843.7500 24,987 KB
BenchmarkRawCachingReuse .NET 6.0 PGO + EA .NET 6.0 10 1,772.0 μs 975.1 μs 53.45 μs 0.02 0.00 46.8750 42.9688 35.1563 401 KB
BenchmarkRawCaching .NET 6.0 PGO + EA .NET 6.0 10 114,002.0 μs 87,680.3 μs 4,806.05 μs 1.01 0.08 - - - 794 KB
BenchmarkNoCache .NET 6.0 PGO + EA .NET 6.0 10 54,598.6 μs 19,064.1 μs 1,044.97 μs 0.48 0.03 5500.0000 5500.0000 5500.0000 45,758 KB
BenchmarkTimedExpiry .NET 6.0 PGO + EA .NET 6.0 10 30,417.9 μs 24,220.4 μs 1,327.60 μs 0.27 0.01 843.7500 843.7500 843.7500 25,090 KB
BenchmarkTimedExpiryMemoryPooling .NET 6.0 PGO + EA .NET 6.0 10 29,573.9 μs 8,210.6 μs 450.05 μs 0.26 0.01 843.7500 843.7500 843.7500 24,987 KB
BenchmarkRawCachingReuse .NET 5.0 .NET 5.0 100 5,609.1 μs 2,651.4 μs 145.33 μs 0.03 0.00 31.2500 23.4375 15.6250 532 KB
BenchmarkRawCaching .NET 5.0 .NET 5.0 100 166,048.2 μs 71,907.0 μs 3,941.47 μs 1.00 0.00 - - - 1,149 KB
BenchmarkNoCache .NET 5.0 .NET 5.0 100 451,107.2 μs 118,514.8 μs 6,496.19 μs 2.72 0.10 50000.0000 50000.0000 50000.0000 419,441 KB
BenchmarkTimedExpiry .NET 5.0 .NET 5.0 100 51,955.5 μs 7,588.7 μs 415.96 μs 0.31 0.01 1900.0000 1900.0000 1900.0000 37,702 KB
BenchmarkTimedExpiryMemoryPooling .NET 5.0 .NET 5.0 100 49,357.4 μs 7,291.9 μs 399.69 μs 0.30 0.01 1900.0000 1900.0000 1900.0000 37,583 KB
BenchmarkRawCachingReuse .NET 6.0 .NET 6.0 100 5,648.5 μs 1,355.8 μs 74.32 μs 0.03 0.00 31.2500 23.4375 15.6250 533 KB
BenchmarkRawCaching .NET 6.0 .NET 6.0 100 169,319.6 μs 119,644.0 μs 6,558.09 μs 1.02 0.02 - - - 1,111 KB
BenchmarkNoCache .NET 6.0 .NET 6.0 100 457,800.2 μs 304,398.9 μs 16,685.13 μs 2.76 0.07 48000.0000 48000.0000 48000.0000 419,482 KB
BenchmarkTimedExpiry .NET 6.0 .NET 6.0 100 50,222.9 μs 6,070.2 μs 332.73 μs 0.30 0.01 1900.0000 1900.0000 1900.0000 37,702 KB
BenchmarkTimedExpiryMemoryPooling .NET 6.0 .NET 6.0 100 51,332.6 μs 16,187.9 μs 887.31 μs 0.31 0.01 1900.0000 1900.0000 1900.0000 37,583 KB
BenchmarkRawCachingReuse .NET 6.0 PGO + EA .NET 6.0 100 5,145.5 μs 703.0 μs 38.53 μs 0.03 0.00 31.2500 23.4375 15.6250 533 KB
BenchmarkRawCaching .NET 6.0 PGO + EA .NET 6.0 100 164,254.5 μs 78,123.9 μs 4,282.24 μs 0.99 0.05 - - - 1,152 KB
BenchmarkNoCache .NET 6.0 PGO + EA .NET 6.0 100 464,690.0 μs 58,668.7 μs 3,215.83 μs 2.80 0.05 50000.0000 50000.0000 50000.0000 419,475 KB
BenchmarkTimedExpiry .NET 6.0 PGO + EA .NET 6.0 100 54,775.4 μs 41,435.8 μs 2,271.24 μs 0.33 0.01 1900.0000 1900.0000 1900.0000 37,702 KB
BenchmarkTimedExpiryMemoryPooling .NET 6.0 PGO + EA .NET 6.0 100 53,674.2 μs 21,566.1 μs 1,182.11 μs 0.32 0.01 1900.0000 1900.0000 1900.0000 37,583 KB

BenchmarkHashing

Method Job Runtime Mean Error StdDev Ratio RatioSD Gen 0 Allocated
StringMD5 .NET 5.0 .NET 5.0 1.230 μs 0.2355 μs 0.0129 μs 1.00 0.00 0.0172 344 B
StringMD5 .NET 6.0 .NET 6.0 1.204 μs 0.2833 μs 0.0155 μs 0.98 0.02 0.0172 344 B
StringMD5 .NET 6.0 PGO + EA .NET 6.0 1.124 μs 0.3251 μs 0.0178 μs 0.91 0.01 0.0172 344 B
StringSHA .NET 5.0 .NET 5.0 1.792 μs 0.0787 μs 0.0043 μs 1.00 0.00 0.0229 440 B
StringSHA .NET 6.0 .NET 6.0 1.689 μs 0.1524 μs 0.0084 μs 0.94 0.01 0.0229 440 B
StringSHA .NET 6.0 PGO + EA .NET 6.0 1.660 μs 0.7430 μs 0.0407 μs 0.93 0.02 0.0229 440 B
StreamMD5 .NET 5.0 .NET 5.0 3.356 μs 2.9901 μs 0.1639 μs 1.00 0.00 0.0153 288 B
StreamMD5 .NET 6.0 .NET 6.0 3.209 μs 0.1995 μs 0.0109 μs 0.96 0.05 0.0153 288 B
StreamMD5 .NET 6.0 PGO + EA .NET 6.0 3.221 μs 1.4496 μs 0.0795 μs 0.96 0.03 0.0153 288 B
StreamSHA .NET 5.0 .NET 5.0 4.653 μs 0.6141 μs 0.0337 μs 1.00 0.00 0.0153 384 B
StreamSHA .NET 6.0 .NET 6.0 5.165 μs 2.6174 μs 0.1435 μs 1.11 0.03 0.0153 384 B
StreamSHA .NET 6.0 PGO + EA .NET 6.0 4.820 μs 1.8453 μs 0.1011 μs 1.04 0.01 0.0153 384 B

BenchmarkInterpolation

Method Job Runtime Mean Error StdDev Ratio RatioSD Allocated
InterpolateMarginPadding .NET 5.0 .NET 5.0 69.936 ns 6.360 ns 0.3486 ns 1.00 0.00 -
InterpolateMarginPadding .NET 6.0 .NET 6.0 69.701 ns 24.217 ns 1.3274 ns 1.00 0.02 -
InterpolateMarginPadding .NET 6.0 PGO + EA .NET 6.0 67.250 ns 11.312 ns 0.6200 ns 0.96 0.01 -
InterpolateFloatGeneric .NET 5.0 .NET 5.0 10.571 ns 3.150 ns 0.1727 ns 1.00 0.00 -
InterpolateFloatGeneric .NET 6.0 .NET 6.0 9.964 ns 2.146 ns 0.1176 ns 0.94 0.01 -
InterpolateFloatGeneric .NET 6.0 PGO + EA .NET 6.0 11.491 ns 3.601 ns 0.1974 ns 1.09 0.02 -
InterpolateFloat .NET 5.0 .NET 5.0 10.543 ns 1.322 ns 0.0725 ns 1.00 0.00 -
InterpolateFloat .NET 6.0 .NET 6.0 10.117 ns 2.988 ns 0.1638 ns 0.96 0.02 -
InterpolateFloat .NET 6.0 PGO + EA .NET 6.0 11.518 ns 3.468 ns 0.1901 ns 1.09 0.02 -

BenchmarkInvalidationWithManyNotAlive

Method Job Runtime Mean Error StdDev Ratio RatioSD Allocated
RunFrame .NET 5.0 .NET 5.0 14.04 ms 6.739 ms 0.369 ms 1.00 0.00 34 B
RunFrame .NET 6.0 .NET 6.0 14.59 ms 15.705 ms 0.861 ms 1.04 0.08 102 B
RunFrame .NET 6.0 PGO + EA .NET 6.0 13.23 ms 2.630 ms 0.144 ms 0.94 0.02 96 B

BenchmarkLocalisableDescription

Method Job Runtime Times Mean Error StdDev Ratio RatioSD
GetLocalisableDescription .NET 5.0 .NET 5.0 1 4.661 μs 1.4636 μs 0.0802 μs 1.00 0.00
GetLocalisableDescription .NET 6.0 .NET 6.0 1 4.154 μs 0.5609 μs 0.0307 μs 0.89 0.02
GetLocalisableDescription .NET 6.0 PGO + EA .NET 6.0 1 4.675 μs 0.5011 μs 0.0275 μs 1.00 0.01
GetLocalisableDescription .NET 5.0 .NET 5.0 10 44.619 μs 16.0753 μs 0.8811 μs 1.00 0.00
GetLocalisableDescription .NET 6.0 .NET 6.0 10 40.473 μs 2.9850 μs 0.1636 μs 0.91 0.01
GetLocalisableDescription .NET 6.0 PGO + EA .NET 6.0 10 48.361 μs 13.7614 μs 0.7543 μs 1.08 0.02
GetLocalisableDescription .NET 5.0 .NET 5.0 100 461.306 μs 243.9421 μs 13.3713 μs 1.00 0.00
GetLocalisableDescription .NET 6.0 .NET 6.0 100 491.401 μs 471.7679 μs 25.8592 μs 1.07 0.07
GetLocalisableDescription .NET 6.0 PGO + EA .NET 6.0 100 482.297 μs 211.2182 μs 11.5776 μs 1.05 0.06
GetLocalisableDescription .NET 5.0 .NET 5.0 1000 4,847.779 μs 2,397.1676 μs 131.3968 μs 1.00 0.00
GetLocalisableDescription .NET 6.0 .NET 6.0 1000 4,575.050 μs 2,580.9514 μs 141.4707 μs 0.94 0.01
GetLocalisableDescription .NET 6.0 PGO + EA .NET 6.0 1000 4,674.133 μs 2,006.1442 μs 109.9635 μs 0.97 0.05

BenchmarkLocalisableString

Method Job Runtime Mean Error StdDev Ratio RatioSD Allocated
BenchmarkStringEquals .NET 5.0 .NET 5.0 5.599 ns 2.1871 ns 0.1199 ns 1.00 0.00 -
BenchmarkStringEquals .NET 6.0 .NET 6.0 6.543 ns 4.8883 ns 0.2679 ns 1.17 0.06 -
BenchmarkStringEquals .NET 6.0 PGO + EA .NET 6.0 5.645 ns 3.5344 ns 0.1937 ns 1.01 0.06 -
BenchmarkLocalisableStringEquals .NET 5.0 .NET 5.0 11.667 ns 16.7706 ns 0.9193 ns 1.00 0.00 -
BenchmarkLocalisableStringEquals .NET 6.0 .NET 6.0 11.318 ns 5.4649 ns 0.2996 ns 0.97 0.06 -
BenchmarkLocalisableStringEquals .NET 6.0 PGO + EA .NET 6.0 10.374 ns 0.8986 ns 0.0493 ns 0.89 0.07 -
BenchmarkRomanisableEquals .NET 5.0 .NET 5.0 20.924 ns 16.7885 ns 0.9202 ns 1.00 0.00 -
BenchmarkRomanisableEquals .NET 6.0 .NET 6.0 22.698 ns 10.8631 ns 0.5954 ns 1.09 0.02 -
BenchmarkRomanisableEquals .NET 6.0 PGO + EA .NET 6.0 21.374 ns 3.2702 ns 0.1793 ns 1.02 0.04 -
BenchmarkTranslatableEquals .NET 5.0 .NET 5.0 21.871 ns 13.5194 ns 0.7410 ns 1.00 0.00 -
BenchmarkTranslatableEquals .NET 6.0 .NET 6.0 21.259 ns 8.9399 ns 0.4900 ns 0.97 0.02 -
BenchmarkTranslatableEquals .NET 6.0 PGO + EA .NET 6.0 21.206 ns 4.5835 ns 0.2512 ns 0.97 0.03 -
BenchmarkFormattableEquals .NET 5.0 .NET 5.0 25.917 ns 3.5909 ns 0.1968 ns 1.00 0.00 -
BenchmarkFormattableEquals .NET 6.0 .NET 6.0 24.360 ns 10.7509 ns 0.5893 ns 0.94 0.02 -
BenchmarkFormattableEquals .NET 6.0 PGO + EA .NET 6.0 23.030 ns 5.6182 ns 0.3080 ns 0.89 0.01 -
BenchmarkStringGetHashCode .NET 5.0 .NET 5.0 3.490 ns 2.3585 ns 0.1293 ns 1.00 0.00 -
BenchmarkStringGetHashCode .NET 6.0 .NET 6.0 3.784 ns 1.2237 ns 0.0671 ns 1.09 0.04 -
BenchmarkStringGetHashCode .NET 6.0 PGO + EA .NET 6.0 3.040 ns 2.6993 ns 0.1480 ns 0.87 0.02 -
BenchmarkLocalisableStringGetHashCode .NET 5.0 .NET 5.0 13.996 ns 2.0558 ns 0.1127 ns 1.00 0.00 -
BenchmarkLocalisableStringGetHashCode .NET 6.0 .NET 6.0 15.543 ns 9.2800 ns 0.5087 ns 1.11 0.03 -
BenchmarkLocalisableStringGetHashCode .NET 6.0 PGO + EA .NET 6.0 14.419 ns 1.5895 ns 0.0871 ns 1.03 0.01 -
BenchmarkRomanisableGetHashCode .NET 5.0 .NET 5.0 22.873 ns 3.5040 ns 0.1921 ns 1.00 0.00 -
BenchmarkRomanisableGetHashCode .NET 6.0 .NET 6.0 26.092 ns 6.1714 ns 0.3383 ns 1.14 0.02 -
BenchmarkRomanisableGetHashCode .NET 6.0 PGO + EA .NET 6.0 24.769 ns 6.2685 ns 0.3436 ns 1.08 0.01 -
BenchmarkTranslatableGetHashCode .NET 5.0 .NET 5.0 36.250 ns 12.5646 ns 0.6887 ns 1.00 0.00 -
BenchmarkTranslatableGetHashCode .NET 6.0 .NET 6.0 36.334 ns 15.6798 ns 0.8595 ns 1.00 0.02 -
BenchmarkTranslatableGetHashCode .NET 6.0 PGO + EA .NET 6.0 32.256 ns 5.2688 ns 0.2888 ns 0.89 0.02 -
BenchmarkFormattableGetHashCode .NET 5.0 .NET 5.0 25.028 ns 15.6634 ns 0.8586 ns 1.00 0.00 -
BenchmarkFormattableGetHashCode .NET 6.0 .NET 6.0 27.618 ns 4.6716 ns 0.2561 ns 1.10 0.05 -
BenchmarkFormattableGetHashCode .NET 6.0 PGO + EA .NET 6.0 23.833 ns 3.6404 ns 0.1995 ns 0.95 0.02 -

BenchmarkLocalisedBindableString

Method Job Runtime Mean Error StdDev Ratio RatioSD Gen 0 Allocated
BenchmarkNonLocalised .NET 5.0 .NET 5.0 112.7 ns 10.97 ns 0.60 ns 1.00 0.00 0.0081 152 B
BenchmarkNonLocalised .NET 6.0 .NET 6.0 102.5 ns 40.16 ns 2.20 ns 0.91 0.02 0.0081 152 B
BenchmarkNonLocalised .NET 6.0 PGO + EA .NET 6.0 104.2 ns 15.12 ns 0.83 ns 0.92 0.01 0.0081 152 B
BenchmarkLocalised .NET 5.0 .NET 5.0 1,346.5 ns 708.78 ns 38.85 ns 1.00 0.00 0.0401 784 B
BenchmarkLocalised .NET 6.0 .NET 6.0 1,405.8 ns 528.24 ns 28.95 ns 1.04 0.01 0.0401 784 B
BenchmarkLocalised .NET 6.0 PGO + EA .NET 6.0 1,466.7 ns 489.17 ns 26.81 ns 1.09 0.02 0.0401 784 B

BenchmarkMakeChildAlive

Method Job Runtime Mean Error StdDev Ratio RatioSD Allocated
RunFrame .NET 5.0 .NET 5.0 12.04 μs 7.739 μs 0.424 μs 1.00 0.00 -
RunFrame .NET 6.0 .NET 6.0 10.84 μs 2.329 μs 0.128 μs 0.90 0.02 -
RunFrame .NET 6.0 PGO + EA .NET 6.0 10.14 μs 5.811 μs 0.319 μs 0.84 0.06 -

BenchmarkManySpinningBoxes

Method Job Runtime Mean Error StdDev Ratio RatioSD Allocated
RunFrame .NET 5.0 .NET 5.0 1.169 ms 0.0809 ms 0.0044 ms 1.00 0.00 4 B
RunFrame .NET 6.0 .NET 6.0 1.111 ms 0.2861 ms 0.0157 ms 0.95 0.02 31 B
RunFrame .NET 6.0 PGO + EA .NET 6.0 1.098 ms 0.3973 ms 0.0218 ms 0.94 0.02 7 B
RunFrameWithAutoSize .NET 5.0 .NET 5.0 2.027 ms 0.5384 ms 0.0295 ms 1.00 0.00 8 B
RunFrameWithAutoSize .NET 6.0 .NET 6.0 1.886 ms 0.0678 ms 0.0037 ms 0.93 0.01 6 B
RunFrameWithAutoSize .NET 6.0 PGO + EA .NET 6.0 1.827 ms 1.5085 ms 0.0827 ms 0.90 0.03 11 B
RunFrameWithAutoSizeDuration .NET 5.0 .NET 5.0 1.792 ms 0.0618 ms 0.0034 ms 1.00 0.00 452 B
RunFrameWithAutoSizeDuration .NET 6.0 .NET 6.0 1.548 ms 0.7042 ms 0.0386 ms 0.86 0.02 453 B
RunFrameWithAutoSizeDuration .NET 6.0 PGO + EA .NET 6.0 1.589 ms 0.2461 ms 0.0135 ms 0.89 0.01 454 B

BenchmarkScreenExtensions

Method Job Runtime Mean Error StdDev Ratio RatioSD Allocated
IsCurrentScreen .NET 5.0 .NET 5.0 15.15 ns 4.806 ns 0.263 ns 1.00 0.00 -
IsCurrentScreen .NET 6.0 .NET 6.0 13.55 ns 7.492 ns 0.411 ns 0.89 0.02 -
IsCurrentScreen .NET 6.0 PGO + EA .NET 6.0 13.06 ns 15.770 ns 0.864 ns 0.86 0.07 -

BenchmarkSlimReadOnlyCollection

Method Job Runtime Mean Error StdDev Ratio RatioSD Gen 0 Allocated
List .NET 5.0 .NET 5.0 53.29 μs 9.880 μs 0.542 μs 1.00 0.00 - -
ListAsReadOnly .NET 5.0 .NET 5.0 165.05 μs 20.553 μs 1.127 μs 3.10 0.05 3.4180 64,000 B
ListAsSlimReadOnly .NET 5.0 .NET 5.0 41.91 μs 17.892 μs 0.981 μs 0.79 0.02 - -
List .NET 6.0 .NET 6.0 22.23 μs 12.744 μs 0.699 μs 0.42 0.01 - -
ListAsReadOnly .NET 6.0 .NET 6.0 183.33 μs 37.298 μs 2.044 μs 3.44 0.07 3.4180 64,000 B
ListAsSlimReadOnly .NET 6.0 .NET 6.0 21.05 μs 6.484 μs 0.355 μs 0.40 0.01 - -
List .NET 6.0 PGO + EA .NET 6.0 22.72 μs 11.582 μs 0.635 μs 0.43 0.01 - -
ListAsReadOnly .NET 6.0 PGO + EA .NET 6.0 186.41 μs 60.202 μs 3.300 μs 3.50 0.08 3.4180 64,000 B
ListAsSlimReadOnly .NET 6.0 PGO + EA .NET 6.0 24.43 μs 12.697 μs 0.696 μs 0.46 0.02 - -

BenchmarkSpinningParentWithManyAlive

Method Job Runtime Mean Error StdDev Ratio RatioSD Allocated
RunFrame .NET 5.0 .NET 5.0 6.870 ms 3.868 ms 0.2120 ms 1.00 0.00 14 B
RunFrame .NET 6.0 .NET 6.0 5.904 ms 4.716 ms 0.2585 ms 0.86 0.03 24 B
RunFrame .NET 6.0 PGO + EA .NET 6.0 5.648 ms 1.205 ms 0.0661 ms 0.82 0.03 24 B

BenchmarkTabletDriver

Method Job Runtime Mean Error StdDev Ratio RatioSD Gen 0 Gen 1 Allocated
DetectBenchmark .NET 5.0 .NET 5.0 368.7 ns 454.8 ns 24.93 ns 1.00 0.00 0.0248 0.0100 464 B
DetectBenchmark .NET 6.0 .NET 6.0 273.1 ns 440.8 ns 24.16 ns 0.74 0.09 0.0238 0.0005 450 B
DetectBenchmark .NET 6.0 PGO + EA .NET 6.0 313.5 ns 839.2 ns 46.00 ns 0.85 0.14 0.0238 - 450 B

BenchmarkTransform

Method Job Runtime Mean Error StdDev Ratio RatioSD Gen 0 Gen 1 Allocated
CreateSingleBlank .NET 5.0 .NET 5.0 12.61 ns 11.703 ns 0.641 ns 1.00 0.00 0.0051 - 96 B
CreateSingleBlank .NET 6.0 .NET 6.0 11.30 ns 5.051 ns 0.277 ns 0.90 0.07 0.0051 - 96 B
CreateSingleBlank .NET 6.0 PGO + EA .NET 6.0 11.65 ns 0.278 ns 0.015 ns 0.93 0.05 0.0051 0.0000 96 B
CreateSequenceWithDefaultEasing .NET 5.0 .NET 5.0 3,277.48 ns 774.732 ns 42.466 ns 1.00 0.00 0.1373 - 2,584 B
CreateSequenceWithDefaultEasing .NET 6.0 .NET 6.0 2,954.59 ns 1,832.369 ns 100.438 ns 0.90 0.03 0.1373 - 2,584 B
CreateSequenceWithDefaultEasing .NET 6.0 PGO + EA .NET 6.0 2,862.46 ns 526.806 ns 28.876 ns 0.87 0.02 0.1373 - 2,584 B
ApplySequenceWithDefaultEasing .NET 5.0 .NET 5.0 1,048.70 ns 81.581 ns 4.472 ns 1.00 0.00 0.0439 - 832 B
ApplySequenceWithDefaultEasing .NET 6.0 .NET 6.0 957.50 ns 304.654 ns 16.699 ns 0.91 0.02 0.0439 - 832 B
ApplySequenceWithDefaultEasing .NET 6.0 PGO + EA .NET 6.0 967.30 ns 400.497 ns 21.953 ns 0.92 0.02 0.0439 - 832 B
CreateSequenceWithValueEasing .NET 5.0 .NET 5.0 3,229.17 ns 734.035 ns 40.235 ns 1.00 0.00 0.1373 - 2,584 B
CreateSequenceWithValueEasing .NET 6.0 .NET 6.0 2,948.52 ns 737.265 ns 40.412 ns 0.91 0.00 0.1373 - 2,584 B
CreateSequenceWithValueEasing .NET 6.0 PGO + EA .NET 6.0 3,117.46 ns 728.405 ns 39.926 ns 0.97 0.01 0.1373 - 2,584 B
ApplySequenceWithValueEasing .NET 5.0 .NET 5.0 1,153.11 ns 532.926 ns 29.211 ns 1.00 0.00 0.0439 - 832 B
ApplySequenceWithValueEasing .NET 6.0 .NET 6.0 987.79 ns 101.899 ns 5.585 ns 0.86 0.02 0.0439 - 832 B
ApplySequenceWithValueEasing .NET 6.0 PGO + EA .NET 6.0 987.18 ns 379.696 ns 20.812 ns 0.86 0.01 0.0439 - 832 B
CreateSequenceWithReferenceEasing .NET 5.0 .NET 5.0 3,436.05 ns 565.483 ns 30.996 ns 1.00 0.00 0.1411 - 2,656 B
CreateSequenceWithReferenceEasing .NET 6.0 .NET 6.0 3,046.64 ns 2,123.662 ns 116.405 ns 0.89 0.04 0.1411 - 2,656 B
CreateSequenceWithReferenceEasing .NET 6.0 PGO + EA .NET 6.0 2,902.82 ns 1,820.396 ns 99.782 ns 0.85 0.04 0.1411 - 2,656 B
ApplySequenceWithReferenceEasing .NET 5.0 .NET 5.0 1,177.87 ns 224.606 ns 12.311 ns 1.00 0.00 0.0458 - 856 B
ApplySequenceWithReferenceEasing .NET 6.0 .NET 6.0 968.81 ns 323.066 ns 17.708 ns 0.82 0.02 0.0458 - 856 B
ApplySequenceWithReferenceEasing .NET 6.0 PGO + EA .NET 6.0 1,000.74 ns 188.860 ns 10.352 ns 0.85 0.02 0.0458 - 856 B

BenchmarkTransformUpdate

Method Job Runtime Mean Error StdDev Ratio RatioSD Allocated
UpdateTransformsWithManyPresent .NET 5.0 .NET 5.0 603.6 μs 173.52 μs 9.51 μs 1.00 0.00 -
UpdateTransformsWithManyPresent .NET 6.0 .NET 6.0 546.7 μs 95.53 μs 5.24 μs 0.91 0.02 1 B
UpdateTransformsWithManyPresent .NET 6.0 PGO + EA .NET 6.0 534.8 μs 116.19 μs 6.37 μs 0.89 0.01 1 B

BenchmarkWeakList

Method Job Runtime ItemCount Mean Error StdDev Ratio RatioSD Gen 0 Gen 1 Allocated
Add .NET 5.0 .NET 5.0 1 288.3 ns 41.29 ns 2.26 ns 1.00 0.00 0.0091 - 176 B
RemoveOne .NET 5.0 .NET 5.0 1 317.5 ns 85.11 ns 4.67 ns 1.10 0.02 0.0091 - 176 B
RemoveAllIteratively .NET 5.0 .NET 5.0 1 329.8 ns 31.65 ns 1.73 ns 1.14 0.01 0.0091 - 176 B
RemoveAllStaggered .NET 5.0 .NET 5.0 1 344.6 ns 145.89 ns 8.00 ns 1.20 0.02 0.0091 - 176 B
Clear .NET 5.0 .NET 5.0 1 304.2 ns 81.80 ns 4.48 ns 1.06 0.02 0.0091 - 176 B
Contains .NET 5.0 .NET 5.0 1 321.5 ns 130.57 ns 7.16 ns 1.11 0.02 0.0091 - 176 B
AddAndEnumerate .NET 5.0 .NET 5.0 1 524.8 ns 160.33 ns 8.79 ns 1.82 0.04 0.0162 - 304 B
ClearAndEnumerate .NET 5.0 .NET 5.0 1 423.5 ns 246.49 ns 13.51 ns 1.47 0.04 0.0114 - 216 B
Add .NET 6.0 .NET 6.0 1 323.3 ns 146.01 ns 8.00 ns 1.12 0.03 0.0091 - 176 B
RemoveOne .NET 6.0 .NET 6.0 1 331.8 ns 137.64 ns 7.54 ns 1.15 0.02 0.0091 - 176 B
RemoveAllIteratively .NET 6.0 .NET 6.0 1 330.2 ns 85.45 ns 4.68 ns 1.15 0.02 0.0091 - 176 B
RemoveAllStaggered .NET 6.0 .NET 6.0 1 357.9 ns 78.76 ns 4.32 ns 1.24 0.02 0.0091 - 176 B
Clear .NET 6.0 .NET 6.0 1 308.2 ns 131.86 ns 7.23 ns 1.07 0.03 0.0091 - 176 B
Contains .NET 6.0 .NET 6.0 1 326.2 ns 90.08 ns 4.94 ns 1.13 0.02 0.0091 - 176 B
AddAndEnumerate .NET 6.0 .NET 6.0 1 504.8 ns 182.61 ns 10.01 ns 1.75 0.02 0.0162 - 304 B
ClearAndEnumerate .NET 6.0 .NET 6.0 1 385.2 ns 10.54 ns 0.58 ns 1.34 0.01 0.0114 - 216 B
Add .NET 6.0 PGO + EA .NET 6.0 1 296.3 ns 134.85 ns 7.39 ns 1.03 0.03 0.0091 - 176 B
RemoveOne .NET 6.0 PGO + EA .NET 6.0 1 332.6 ns 45.84 ns 2.51 ns 1.15 0.02 0.0091 - 176 B
RemoveAllIteratively .NET 6.0 PGO + EA .NET 6.0 1 323.2 ns 19.73 ns 1.08 ns 1.12 0.01 0.0091 - 176 B
RemoveAllStaggered .NET 6.0 PGO + EA .NET 6.0 1 358.5 ns 78.41 ns 4.30 ns 1.24 0.02 0.0091 - 176 B
Clear .NET 6.0 PGO + EA .NET 6.0 1 319.4 ns 253.94 ns 13.92 ns 1.11 0.04 0.0091 - 176 B
Contains .NET 6.0 PGO + EA .NET 6.0 1 321.0 ns 192.23 ns 10.54 ns 1.11 0.04 0.0091 - 176 B
AddAndEnumerate .NET 6.0 PGO + EA .NET 6.0 1 492.5 ns 191.81 ns 10.51 ns 1.71 0.03 0.0162 - 304 B
ClearAndEnumerate .NET 6.0 PGO + EA .NET 6.0 1 382.4 ns 110.57 ns 6.06 ns 1.33 0.01 0.0114 - 216 B
Add .NET 5.0 .NET 5.0 10 2,423.5 ns 267.70 ns 14.67 ns 1.00 0.00 0.0420 - 824 B
RemoveOne .NET 5.0 .NET 5.0 10 2,552.6 ns 1,441.04 ns 78.99 ns 1.05 0.03 0.0420 - 824 B
RemoveAllIteratively .NET 5.0 .NET 5.0 10 2,950.2 ns 446.89 ns 24.50 ns 1.22 0.01 0.0420 - 824 B
RemoveAllStaggered .NET 5.0 .NET 5.0 10 2,992.2 ns 1,276.39 ns 69.96 ns 1.23 0.03 0.0420 - 824 B
Clear .NET 5.0 .NET 5.0 10 2,498.4 ns 430.54 ns 23.60 ns 1.03 0.01 0.0420 - 824 B
Contains .NET 5.0 .NET 5.0 10 2,578.3 ns 932.38 ns 51.11 ns 1.06 0.02 0.0420 - 824 B
AddAndEnumerate .NET 5.0 .NET 5.0 10 3,173.3 ns 747.89 ns 40.99 ns 1.31 0.02 0.0610 - 1,200 B
ClearAndEnumerate .NET 5.0 .NET 5.0 10 2,602.3 ns 438.27 ns 24.02 ns 1.07 0.01 0.0458 - 864 B
Add .NET 6.0 .NET 6.0 10 2,524.9 ns 119.82 ns 6.57 ns 1.04 0.01 0.0420 - 824 B
RemoveOne .NET 6.0 .NET 6.0 10 2,510.4 ns 590.53 ns 32.37 ns 1.04 0.01 0.0420 - 824 B
RemoveAllIteratively .NET 6.0 .NET 6.0 10 2,749.6 ns 315.46 ns 17.29 ns 1.13 0.01 0.0420 - 824 B
RemoveAllStaggered .NET 6.0 .NET 6.0 10 2,966.1 ns 1,190.03 ns 65.23 ns 1.22 0.02 0.0420 - 824 B
Clear .NET 6.0 .NET 6.0 10 2,660.3 ns 1,802.75 ns 98.81 ns 1.10 0.05 0.0420 - 824 B
Contains .NET 6.0 .NET 6.0 10 2,740.0 ns 422.50 ns 23.16 ns 1.13 0.00 0.0420 - 824 B
AddAndEnumerate .NET 6.0 .NET 6.0 10 3,637.8 ns 836.33 ns 45.84 ns 1.50 0.02 0.0610 - 1,200 B
ClearAndEnumerate .NET 6.0 .NET 6.0 10 2,734.5 ns 902.97 ns 49.49 ns 1.13 0.03 0.0458 - 864 B
Add .NET 6.0 PGO + EA .NET 6.0 10 2,597.4 ns 1,819.88 ns 99.75 ns 1.07 0.04 0.0420 - 824 B
RemoveOne .NET 6.0 PGO + EA .NET 6.0 10 2,542.0 ns 372.68 ns 20.43 ns 1.05 0.00 0.0420 - 824 B
RemoveAllIteratively .NET 6.0 PGO + EA .NET 6.0 10 2,750.6 ns 791.94 ns 43.41 ns 1.13 0.02 0.0420 - 824 B
RemoveAllStaggered .NET 6.0 PGO + EA .NET 6.0 10 2,747.9 ns 776.32 ns 42.55 ns 1.13 0.01 0.0420 - 824 B
Clear .NET 6.0 PGO + EA .NET 6.0 10 2,431.2 ns 956.47 ns 52.43 ns 1.00 0.03 0.0420 - 824 B
Contains .NET 6.0 PGO + EA .NET 6.0 10 2,463.5 ns 151.82 ns 8.32 ns 1.02 0.00 0.0420 - 824 B
AddAndEnumerate .NET 6.0 PGO + EA .NET 6.0 10 3,303.4 ns 132.13 ns 7.24 ns 1.36 0.01 0.0610 - 1,200 B
ClearAndEnumerate .NET 6.0 PGO + EA .NET 6.0 10 2,632.4 ns 2,679.79 ns 146.89 ns 1.09 0.06 0.0458 - 864 B
Add .NET 5.0 .NET 5.0 100 23,643.6 ns 8,743.01 ns 479.23 ns 1.00 0.00 0.3357 - 6,640 B
RemoveOne .NET 5.0 .NET 5.0 100 23,945.9 ns 17,235.77 ns 944.75 ns 1.01 0.02 0.3357 - 6,640 B
RemoveAllIteratively .NET 5.0 .NET 5.0 100 27,307.3 ns 16,366.21 ns 897.09 ns 1.16 0.06 0.3357 - 6,640 B
RemoveAllStaggered .NET 5.0 .NET 5.0 100 40,903.5 ns 2,175.92 ns 119.27 ns 1.73 0.03 0.3052 - 6,640 B
Clear .NET 5.0 .NET 5.0 100 24,021.5 ns 10,287.34 ns 563.88 ns 1.02 0.04 0.3357 - 6,640 B
Contains .NET 5.0 .NET 5.0 100 24,271.7 ns 5,823.88 ns 319.23 ns 1.03 0.02 0.3357 - 6,640 B
AddAndEnumerate .NET 5.0 .NET 5.0 100 27,728.6 ns 7,293.20 ns 399.77 ns 1.17 0.04 0.4578 - 8,760 B
ClearAndEnumerate .NET 5.0 .NET 5.0 100 23,932.2 ns 6,940.73 ns 380.44 ns 1.01 0.01 0.3357 - 6,680 B
Add .NET 6.0 .NET 6.0 100 24,266.0 ns 6,528.06 ns 357.83 ns 1.03 0.02 0.3357 - 6,640 B
RemoveOne .NET 6.0 .NET 6.0 100 24,954.2 ns 7,904.68 ns 433.28 ns 1.06 0.04 0.3357 - 6,640 B
RemoveAllIteratively .NET 6.0 .NET 6.0 100 28,035.8 ns 13,204.07 ns 723.76 ns 1.19 0.05 0.3357 - 6,640 B
RemoveAllStaggered .NET 6.0 .NET 6.0 100 39,025.0 ns 16,119.07 ns 883.54 ns 1.65 0.06 0.3052 - 6,640 B
Clear .NET 6.0 .NET 6.0 100 23,526.7 ns 6,410.43 ns 351.38 ns 1.00 0.01 0.3357 - 6,640 B
Contains .NET 6.0 .NET 6.0 100 24,705.2 ns 18,586.64 ns 1,018.80 ns 1.05 0.06 0.3357 - 6,640 B
AddAndEnumerate .NET 6.0 .NET 6.0 100 27,454.7 ns 6,039.40 ns 331.04 ns 1.16 0.03 0.4578 - 8,760 B
ClearAndEnumerate .NET 6.0 .NET 6.0 100 23,249.1 ns 999.48 ns 54.78 ns 0.98 0.02 0.3357 - 6,680 B
Add .NET 6.0 PGO + EA .NET 6.0 100 23,930.3 ns 10,830.02 ns 593.63 ns 1.01 0.04 0.3357 - 6,640 B
RemoveOne .NET 6.0 PGO + EA .NET 6.0 100 23,798.2 ns 5,541.93 ns 303.77 ns 1.01 0.03 0.3357 - 6,640 B
RemoveAllIteratively .NET 6.0 PGO + EA .NET 6.0 100 27,485.2 ns 6,163.57 ns 337.85 ns 1.16 0.02 0.3357 - 6,640 B
RemoveAllStaggered .NET 6.0 PGO + EA .NET 6.0 100 39,469.8 ns 12,170.65 ns 667.11 ns 1.67 0.06 0.3052 - 6,640 B
Clear .NET 6.0 PGO + EA .NET 6.0 100 22,869.7 ns 3,186.26 ns 174.65 ns 0.97 0.03 0.3357 - 6,640 B
Contains .NET 6.0 PGO + EA .NET 6.0 100 25,818.9 ns 7,027.83 ns 385.22 ns 1.09 0.04 0.3357 - 6,640 B
AddAndEnumerate .NET 6.0 PGO + EA .NET 6.0 100 26,858.9 ns 4,769.48 ns 261.43 ns 1.14 0.02 0.4578 - 8,760 B
ClearAndEnumerate .NET 6.0 PGO + EA .NET 6.0 100 22,502.6 ns 3,710.93 ns 203.41 ns 0.95 0.02 0.3357 - 6,680 B
Add .NET 5.0 .NET 5.0 1000 238,862.2 ns 82,921.23 ns 4,545.19 ns 1.00 0.00 2.9297 0.2441 56,984 B
RemoveOne .NET 5.0 .NET 5.0 1000 248,517.0 ns 53,225.33 ns 2,917.46 ns 1.04 0.03 2.9297 - 56,984 B
RemoveAllIteratively .NET 5.0 .NET 5.0 1000 289,003.0 ns 172,388.19 ns 9,449.18 ns 1.21 0.04 2.9297 - 56,984 B
RemoveAllStaggered .NET 5.0 .NET 5.0 1000 1,662,460.4 ns 207,403.99 ns 11,368.51 ns 6.96 0.17 1.9531 - 56,985 B
Clear .NET 5.0 .NET 5.0 1000 237,540.9 ns 102,184.56 ns 5,601.08 ns 0.99 0.02 2.9297 - 56,984 B
Contains .NET 5.0 .NET 5.0 1000 258,088.5 ns 15,204.58 ns 833.41 ns 1.08 0.02 2.9297 - 56,984 B
AddAndEnumerate .NET 5.0 .NET 5.0 1000 312,397.5 ns 143,481.94 ns 7,864.73 ns 1.31 0.05 3.9063 0.4883 73,632 B
ClearAndEnumerate .NET 5.0 .NET 5.0 1000 242,634.3 ns 62,787.36 ns 3,441.59 ns 1.02 0.02 2.9297 - 57,024 B
Add .NET 6.0 .NET 6.0 1000 240,373.4 ns 103,322.52 ns 5,663.46 ns 1.01 0.04 2.9297 0.2441 56,984 B
RemoveOne .NET 6.0 .NET 6.0 1000 237,860.3 ns 107,247.21 ns 5,878.58 ns 1.00 0.01 2.9297 - 56,984 B
RemoveAllIteratively .NET 6.0 .NET 6.0 1000 271,145.1 ns 78,486.04 ns 4,302.08 ns 1.14 0.00 2.9297 - 56,984 B
RemoveAllStaggered .NET 6.0 .NET 6.0 1000 1,316,039.1 ns 206,730.57 ns 11,331.60 ns 5.51 0.14 1.9531 - 56,986 B
Clear .NET 6.0 .NET 6.0 1000 247,980.0 ns 103,692.48 ns 5,683.73 ns 1.04 0.03 2.9297 0.2441 56,984 B
Contains .NET 6.0 .NET 6.0 1000 244,322.9 ns 43,574.72 ns 2,388.48 ns 1.02 0.02 2.9297 0.2441 56,984 B
AddAndEnumerate .NET 6.0 .NET 6.0 1000 268,993.8 ns 94,747.86 ns 5,193.45 ns 1.13 0.04 3.9063 0.4883 73,632 B
ClearAndEnumerate .NET 6.0 .NET 6.0 1000 282,215.5 ns 112,060.41 ns 6,142.41 ns 1.18 0.05 2.9297 - 57,024 B
Add .NET 6.0 PGO + EA .NET 6.0 1000 239,934.8 ns 84,179.59 ns 4,614.17 ns 1.00 0.02 2.9297 - 56,984 B
RemoveOne .NET 6.0 PGO + EA .NET 6.0 1000 260,894.6 ns 132,351.92 ns 7,254.66 ns 1.09 0.01 2.9297 - 56,984 B
RemoveAllIteratively .NET 6.0 PGO + EA .NET 6.0 1000 267,464.5 ns 34,935.47 ns 1,914.93 ns 1.12 0.02 2.9297 - 56,984 B
RemoveAllStaggered .NET 6.0 PGO + EA .NET 6.0 1000 1,352,005.1 ns 864,910.71 ns 47,408.67 ns 5.66 0.24 1.9531 - 56,985 B
Clear .NET 6.0 PGO + EA .NET 6.0 1000 250,431.2 ns 93,648.58 ns 5,133.19 ns 1.05 0.01 2.9297 0.2441 56,984 B
Contains .NET 6.0 PGO + EA .NET 6.0 1000 257,267.2 ns 122,217.22 ns 6,699.14 ns 1.08 0.01 2.9297 - 56,984 B
AddAndEnumerate .NET 6.0 PGO + EA .NET 6.0 1000 262,176.4 ns 142,760.67 ns 7,825.19 ns 1.10 0.04 3.9063 0.9766 73,632 B
ClearAndEnumerate .NET 6.0 PGO + EA .NET 6.0 1000 227,613.5 ns 41,140.82 ns 2,255.07 ns 0.95 0.01 2.9297 0.2441 57,024 B
@hez2010
Copy link
Author

hez2010 commented Aug 23, 2021

Executed with:

 BenchmarkSwitcher
    .FromAssembly(typeof(Program).Assembly)
    .Run(args, DefaultConfig.Instance.WithOption(ConfigOptions.DisableOptimizationsValidator, true)
        .AddJob(
            Job.ShortRun.WithRuntime(CoreRuntime.Core50).WithId(".NET 5.0").AsBaseline(),
            Job.ShortRun.WithRuntime(CoreRuntime.Core60).WithId(".NET 6.0"),
            Job.ShortRun.WithRuntime(CoreRuntime.Core60)
                .WithEnvironmentVariables(
                    new EnvironmentVariable("DOTNET_JitObjectStackAllocation", "1"),
                    new EnvironmentVariable("DOTNET_TieredPgo", "1"),
                    new EnvironmentVariable("DOTNET_ReadyToRun", "0"),
                    new EnvironmentVariable("DOTNET_TC_QuickJitForLoops", "1")).WithId(".NET 6.0 PGO + EA")));

Notes:

  • This is a shortrun so errors may be large, to execute tests with Default job, replace Job.ShortRun with Job.Default.
  • if (FetchCount > 100) throw new NotImplementedException(); in BenchmarkFontLoading.cs will crash BenchmarkDotNet so I limit FetchCount to up to 100.
  • There're some JIT regressions in .NET 6 preview 7, so I used nightly build for testing.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment