Skip to content

[Perf] Windows/x64: 59 Regressions due to PGO update #87179

@performanceautofiler

Description

@performanceautofiler

Run Information

Name Value
Architecture x64
OS Windows 10.0.19042
Queue OwlWindows
Baseline 0214a047483067a6a813a34be5b6b1f757600961
Compare 2f18320e731cc3b06bc43cdb4d82dffc4f8f81fc
Diff Diff
Configs CompilationMode:tiered, RunKind:micro

Regressions in System.Collections.ContainsTrue<Int32>

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
ICollection - Duration of single invocation 13.10 μs 17.22 μs 1.32 0.04 False
List - Duration of single invocation 12.83 μs 17.39 μs 1.35 0.08 False

graph
graph
Test Report

Repro

General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md

Payloads

Baseline
Compare

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Collections.ContainsTrue&lt;Int32&gt;*'

Payloads

Baseline
Compare

Histogram

System.Collections.ContainsTrue<Int32>.ICollection(Size: 512)


Description of detection logic

IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsRegressionWindowed: Marked as regression because 17.221965465701697 > 13.807469303835454.
IsChangePoint: Marked as a change because one of 5/19/2023 10:30:38 AM, 5/26/2023 6:22:05 AM, 6/2/2023 6:53:36 PM, 6/5/2023 10:43:22 AM falls between 5/27/2023 6:38:16 PM and 6/5/2023 10:43:22 AM.
IsRegressionStdDev: Marked as regression because -12.59767594136789 (T) = (0 -17214.049295440363) / Math.Sqrt((2013151.2654274935 / (25)) + (98.19219233095977 / (7))) is less than -2.0422724562973107 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (25) + (7) - 2, .025) and -0.2621305908275654 = (13638.881285773525 - 17214.049295440363) / 13638.881285773525 is less than -0.05.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.

JIT Disasms

System.Collections.ContainsTrue<Int32>.List(Size: 512)


Description of detection logic

IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsRegressionWindowed: Marked as regression because 17.388277422049 > 13.959162170242886.
IsChangePoint: Marked as a change because one of 5/19/2023 10:30:38 AM, 5/26/2023 6:22:05 AM, 6/2/2023 6:53:36 PM, 6/5/2023 10:43:22 AM falls between 5/27/2023 6:38:16 PM and 6/5/2023 10:43:22 AM.
IsRegressionStdDev: Marked as regression because -12.904286364505177 (T) = (0 -17409.06331095206) / Math.Sqrt((2056912.7223882207 / (25)) + (11076.39780713844 / (7))) is less than -2.0422724562973107 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (25) + (7) - 2, .025) and -0.27331935161706755 = (13672.189375621447 - 17409.06331095206) / 13672.189375621447 is less than -0.05.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.

JIT Disasms

Docs

Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository


Run Information

Name Value
Architecture x64
OS Windows 10.0.19042
Queue OwlWindows
Baseline 0214a047483067a6a813a34be5b6b1f757600961
Compare 2f18320e731cc3b06bc43cdb4d82dffc4f8f81fc
Diff Diff
Configs CompilationMode:tiered, RunKind:micro

Regressions in System.Tests.Perf_String

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
Remove_IntInt - Duration of single invocation 11.45 ns 16.29 ns 1.42 0.06 False
Replace_String - Duration of single invocation 38.91 ns 46.95 ns 1.21 0.03 False
TrimStart - Duration of single invocation 11.08 ns 16.17 ns 1.46 0.07 False
ToLowerInvariant - Duration of single invocation 18.06 ns 22.96 ns 1.27 0.03 False
TrimEnd - Duration of single invocation 11.57 ns 14.91 ns 1.29 0.09 False
Trim_CharArr - Duration of single invocation 16.40 ns 19.69 ns 1.20 0.10 False
TrimStart_CharArr - Duration of single invocation 12.41 ns 14.03 ns 1.13 0.05 False
ToUpperInvariant - Duration of single invocation 18.13 ns 27.33 ns 1.51 0.05 False
Trim_CharArr - Duration of single invocation 13.18 ns 16.50 ns 1.25 0.05 False
Replace_String - Duration of single invocation 35.69 ns 50.18 ns 1.41 0.03 False
Remove_IntInt - Duration of single invocation 11.93 ns 15.23 ns 1.28 0.05 False
ToLowerInvariant - Duration of single invocation 18.59 ns 23.14 ns 1.24 0.04 False
Trim_CharArr - Duration of single invocation 14.50 ns 16.73 ns 1.15 0.08 False
ToLowerInvariant - Duration of single invocation 31.45 ns 35.73 ns 1.14 0.03 False
Remove_IntInt - Duration of single invocation 11.28 ns 15.25 ns 1.35 0.06 False

graph
graph
graph
graph
graph
graph
graph
graph
graph
graph
graph
graph
graph
graph
graph
Test Report

Repro

General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md

Payloads

Baseline
Compare

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Tests.Perf_String*'

Payloads

Baseline
Compare

Histogram

System.Tests.Perf_String.Remove_IntInt(s: "dzsdzsDDZSDZSDZSddsz", i1: 10, i2: 1)


Description of detection logic

IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsRegressionWindowed: Marked as regression because 16.286023356741666 > 12.91177764480207.
IsChangePoint: Marked as a change because one of 4/9/2023 11:04:55 PM, 4/12/2023 8:39:35 PM, 5/2/2023 3:18:41 PM, 5/26/2023 9:55:14 AM, 6/2/2023 6:53:36 PM, 6/5/2023 10:43:22 AM falls between 5/27/2023 6:38:16 PM and 6/5/2023 10:43:22 AM.
IsRegressionStdDev: Marked as regression because -13.550925850566289 (T) = (0 -16.143226907608938) / Math.Sqrt((1.2931853427437008 / (24)) + (0.28293719304310155 / (7))) is less than -2.0452296421282288 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (24) + (7) - 2, .025) and -0.34729928512542557 = (11.981916034421483 - 16.143226907608938) / 11.981916034421483 is less than -0.05.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.

JIT Disasms

System.Tests.Perf_String.Replace_String(text: "This is a very nice sentence. This is another very nice sentence.", oldValue: "a", newValue: "")


Description of detection logic

IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsRegressionWindowed: Marked as regression because 46.948632398824834 > 45.132741645284355.
IsChangePoint: Marked as a change because one of 3/14/2023 8:42:09 PM, 3/17/2023 10:06:19 AM, 4/9/2023 11:04:55 PM, 4/12/2023 8:39:35 PM, 5/26/2023 9:55:14 AM, 6/2/2023 6:53:36 PM, 6/5/2023 10:43:22 AM falls between 5/27/2023 6:38:16 PM and 6/5/2023 10:43:22 AM.
IsRegressionStdDev: Marked as regression because -9.467008971783427 (T) = (0 -46.62551707133518) / Math.Sqrt((8.53770693900059 / (25)) + (0.573687182384257 / (7))) is less than -2.0422724562973107 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (25) + (7) - 2, .025) and -0.15224457929309637 = (40.46494807546849 - 46.62551707133518) / 40.46494807546849 is less than -0.05.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.

JIT Disasms

System.Tests.Perf_String.TrimStart(s: " Test")


Description of detection logic

IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsRegressionWindowed: Marked as regression because 16.165391021408933 > 11.30719128424789.
IsChangePoint: Marked as a change because one of 4/25/2023 6:46:56 PM, 5/19/2023 10:30:38 AM, 5/22/2023 7:40:07 AM, 6/2/2023 6:53:36 PM, 6/5/2023 10:43:22 AM falls between 5/27/2023 6:38:16 PM and 6/5/2023 10:43:22 AM.
IsRegressionStdDev: Marked as regression because -48.63622296556723 (T) = (0 -16.35964596795198) / Math.Sqrt((0.17202241041931612 / (24)) + (0.030943304456261533 / (7))) is less than -2.0452296421282288 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (24) + (7) - 2, .025) and -0.47065447176134534 = (11.124058221751213 - 16.35964596795198) / 11.124058221751213 is less than -0.05.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.

JIT Disasms

System.Tests.Perf_String.ToLowerInvariant(s: "TeSt")


Description of detection logic

IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsRegressionWindowed: Marked as regression because 22.962254251870444 > 19.454100154148634.
IsChangePoint: Marked as a change because one of 4/12/2023 8:39:35 PM, 5/19/2023 10:30:38 AM, 6/2/2023 6:53:36 PM, 6/5/2023 10:43:22 AM falls between 5/27/2023 6:38:16 PM and 6/5/2023 10:43:22 AM.
IsRegressionStdDev: Marked as regression because -35.500729363171196 (T) = (0 -23.347707883502615) / Math.Sqrt((0.37532936199380573 / (24)) + (0.04925291202905812 / (7))) is less than -2.0452296421282288 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (24) + (7) - 2, .025) and -0.29695458966437155 = (18.001947076300166 - 23.347707883502615) / 18.001947076300166 is less than -0.05.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.

JIT Disasms

System.Tests.Perf_String.TrimEnd(s: "Test ")


Description of detection logic

IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsRegressionWindowed: Marked as regression because 14.913651208547238 > 12.72516506002495.
IsChangePoint: Marked as a change because one of 3/21/2023 10:36:00 PM, 4/19/2023 8:38:27 PM, 5/19/2023 10:30:38 AM, 6/2/2023 6:53:36 PM, 6/5/2023 10:43:22 AM falls between 5/27/2023 6:38:16 PM and 6/5/2023 10:43:22 AM.
IsRegressionStdDev: Marked as regression because -8.274444649292139 (T) = (0 -15.648369454951709) / Math.Sqrt((0.14975776255986786 / (24)) + (1.2964555813686132 / (7))) is less than -2.0452296421282288 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (24) + (7) - 2, .025) and -0.3010052373317946 = (12.02790658017998 - 15.648369454951709) / 12.02790658017998 is less than -0.05.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.

JIT Disasms

System.Tests.Perf_String.Trim_CharArr(s: " Te st ", c: [' ', ' '])


Description of detection logic

IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsRegressionWindowed: Marked as regression because 19.68856913041714 > 17.4880858480232.
IsChangePoint: Marked as a change because one of 4/9/2023 11:04:55 PM, 5/22/2023 7:40:07 AM, 5/23/2023 1:41:12 PM, 6/2/2023 6:53:36 PM, 6/5/2023 10:43:22 AM falls between 5/27/2023 6:38:16 PM and 6/5/2023 10:43:22 AM.
IsRegressionStdDev: Marked as regression because -19.497367065447687 (T) = (0 -19.924239585484628) / Math.Sqrt((0.31606642421014763 / (24)) + (0.12677602164963053 / (7))) is less than -2.0452296421282288 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (24) + (7) - 2, .025) and -0.20929676797304597 = (16.475889221866108 - 19.924239585484628) / 16.475889221866108 is less than -0.05.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.

JIT Disasms

System.Tests.Perf_String.TrimStart_CharArr(s: " Test", c: [' ', ' '])


Description of detection logic

IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsRegressionWindowed: Marked as regression because 14.02842604331755 > 13.737467144653055.
IsChangePoint: Marked as a change because one of 4/9/2023 11:04:55 PM, 4/17/2023 6:40:18 PM, 4/25/2023 6:46:56 PM, 5/19/2023 10:30:38 AM, 5/26/2023 9:55:14 AM, 6/2/2023 6:53:36 PM, 6/5/2023 10:43:22 AM falls between 5/27/2023 6:38:16 PM and 6/5/2023 10:43:22 AM.
IsRegressionStdDev: Marked as regression because -7.813505745388528 (T) = (0 -14.142283264510453) / Math.Sqrt((0.7491159584776212 / (24)) + (0.11758300126126087 / (7))) is less than -2.0452296421282288 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (24) + (7) - 2, .025) and -0.1377322553843227 = (12.43023848324774 - 14.142283264510453) / 12.43023848324774 is less than -0.05.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.

JIT Disasms

System.Tests.Perf_String.ToUpperInvariant(s: "test")


Description of detection logic

IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsRegressionWindowed: Marked as regression because 27.33346013334883 > 18.687162821963323.
IsChangePoint: Marked as a change because one of 4/9/2023 11:04:55 PM, 5/22/2023 7:40:07 AM, 6/2/2023 6:53:36 PM, 6/5/2023 10:43:22 AM falls between 5/27/2023 6:38:16 PM and 6/5/2023 10:43:22 AM.
IsRegressionStdDev: Marked as regression because -3.161744711592882 (T) = (0 -22.108599390788534) / Math.Sqrt((0.21718701830331613 / (24)) + (14.017759538709216 / (7))) is less than -2.0452296421282288 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (24) + (7) - 2, .025) and -0.2544395865715673 = (17.62428388537403 - 22.108599390788534) / 17.62428388537403 is less than -0.05.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.

JIT Disasms

System.Tests.Perf_String.Trim_CharArr(s: " Test", c: [' ', ' '])


Description of detection logic

IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsRegressionWindowed: Marked as regression because 16.50055467177426 > 15.102117059623264.
IsChangePoint: Marked as a change because one of 4/9/2023 11:04:55 PM, 4/19/2023 1:39:34 AM, 5/19/2023 10:30:38 AM, 5/26/2023 9:55:14 AM, 6/2/2023 6:53:36 PM, 6/5/2023 10:43:22 AM falls between 5/27/2023 6:38:16 PM and 6/5/2023 10:43:22 AM.
IsRegressionStdDev: Marked as regression because -14.258750931932699 (T) = (0 -16.487820179957204) / Math.Sqrt((0.9421479652021646 / (24)) + (0.002043369491451209 / (7))) is less than -2.0452296421282288 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (24) + (7) - 2, .025) and -0.2077020133146914 = (13.652225464710694 - 16.487820179957204) / 13.652225464710694 is less than -0.05.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.

JIT Disasms

System.Tests.Perf_String.Replace_String(text: "This is a very nice sentence", oldValue: "nice", newValue: "bad")


Description of detection logic

IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsRegressionWindowed: Marked as regression because 50.183800855262206 > 42.44772404786201.
IsChangePoint: Marked as a change because one of 3/20/2023 8:31:51 AM, 5/26/2023 9:55:14 AM, 6/2/2023 6:53:36 PM, 6/5/2023 10:43:22 AM falls between 5/27/2023 6:38:16 PM and 6/5/2023 10:43:22 AM.
IsRegressionStdDev: Marked as regression because -14.937590072600948 (T) = (0 -50.36156535756361) / Math.Sqrt((19.54562471648434 / (25)) + (0.4426933315480499 / (7))) is less than -2.0422724562973107 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (25) + (7) - 2, .025) and -0.3748792685114141 = (36.62980925742682 - 50.36156535756361) / 36.62980925742682 is less than -0.05.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.

JIT Disasms

System.Tests.Perf_String.Remove_IntInt(s: "dzsdzsDDZSDZSDZSddsz", i1: 0, i2: 8)


Description of detection logic

IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsRegressionWindowed: Marked as regression because 15.234881995647653 > 12.548569291285613.
IsChangePoint: Marked as a change because one of 4/9/2023 11:04:55 PM, 4/12/2023 8:39:35 PM, 5/19/2023 10:30:38 AM, 5/26/2023 6:22:05 AM, 6/2/2023 6:53:36 PM, 6/5/2023 10:43:22 AM falls between 5/27/2023 6:38:16 PM and 6/5/2023 10:43:22 AM.
IsRegressionStdDev: Marked as regression because -7.291263627626198 (T) = (0 -14.559666237283732) / Math.Sqrt((0.11878048749863417 / (24)) + (0.8419137856409523 / (7))) is less than -2.0452296421282288 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (24) + (7) - 2, .025) and -0.21537965450867097 = (11.979521117761033 - 14.559666237283732) / 11.979521117761033 is less than -0.05.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.

JIT Disasms

System.Tests.Perf_String.ToLowerInvariant(s: "TEST")


Description of detection logic

IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsRegressionWindowed: Marked as regression because 23.135248297997048 > 19.596599138145027.
IsChangePoint: Marked as a change because one of 4/12/2023 8:39:35 PM, 5/19/2023 10:30:38 AM, 6/2/2023 6:53:36 PM, 6/5/2023 10:43:22 AM falls between 5/27/2023 6:38:16 PM and 6/5/2023 10:43:22 AM.
IsRegressionStdDev: Marked as regression because -34.88193701168203 (T) = (0 -23.20114159891524) / Math.Sqrt((0.31180615878346046 / (24)) + (0.06536239609790322 / (7))) is less than -2.0452296421282288 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (24) + (7) - 2, .025) and -0.2897602741505068 = (17.98872400081987 - 23.20114159891524) / 17.98872400081987 is less than -0.05.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.

JIT Disasms

System.Tests.Perf_String.Trim_CharArr(s: "Test ", c: [' ', ' '])


Description of detection logic

IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsRegressionWindowed: Marked as regression because 16.733750673324913 > 15.749647040257416.
IsChangePoint: Marked as a change because one of 4/9/2023 11:04:55 PM, 4/17/2023 6:40:18 PM, 5/19/2023 10:30:38 AM, 5/22/2023 7:40:07 AM, 5/23/2023 1:41:12 PM, 6/2/2023 6:53:36 PM, 6/5/2023 10:43:22 AM falls between 5/27/2023 6:38:16 PM and 6/5/2023 10:43:22 AM.
IsRegressionStdDev: Marked as regression because -17.592966750486983 (T) = (0 -16.873858487586865) / Math.Sqrt((0.32950062302134553 / (24)) + (0.0043234044063571436 / (7))) is less than -2.0452296421282288 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (24) + (7) - 2, .025) and -0.1427040498573515 = (14.766604257413194 - 16.873858487586865) / 14.766604257413194 is less than -0.05.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.

JIT Disasms

System.Tests.Perf_String.ToLowerInvariant(s: "This is a much longer piece of text that might benefit more from vectorization.")


Description of detection logic

IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsRegressionWindowed: Marked as regression because 35.72884961714696 > 34.557854647388986.
IsChangePoint: Marked as a change because one of 5/2/2023 3:18:41 PM, 5/26/2023 9:55:14 AM, 6/2/2023 6:53:36 PM, 6/5/2023 10:43:22 AM falls between 5/27/2023 6:38:16 PM and 6/5/2023 10:43:22 AM.
IsRegressionStdDev: Marked as regression because -11.669014811508955 (T) = (0 -35.66501082277905) / Math.Sqrt((2.398002263904492 / (24)) + (0.061138336249441684 / (7))) is less than -2.0452296421282288 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (24) + (7) - 2, .025) and -0.12088405020055965 = (31.818644235679432 - 35.66501082277905) / 31.818644235679432 is less than -0.05.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.

JIT Disasms

System.Tests.Perf_String.Remove_IntInt(s: "dzsdzsDDZSDZSDZSddsz", i1: 7, i2: 4)


Description of detection logic

IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsRegressionWindowed: Marked as regression because 15.253034117136021 > 12.635653580588492.
IsChangePoint: Marked as a change because one of 4/9/2023 11:04:55 PM, 4/12/2023 8:39:35 PM, 5/19/2023 10:30:38 AM, 5/26/2023 9:55:14 AM, 6/2/2023 6:53:36 PM, 6/5/2023 10:43:22 AM falls between 5/27/2023 6:38:16 PM and 6/5/2023 10:43:22 AM.
IsRegressionStdDev: Marked as regression because -8.303553574006205 (T) = (0 -15.15861929406102) / Math.Sqrt((0.3863057974234546 / (24)) + (1.1840634869368947 / (7))) is less than -2.0452296421282288 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (24) + (7) - 2, .025) and -0.30849969383118686 = (11.584732778712194 - 15.15861929406102) / 11.584732778712194 is less than -0.05.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.

JIT Disasms

Docs

Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository


Run Information

Name Value
Architecture x64
OS Windows 10.0.19042
Queue OwlWindows
Baseline 0214a047483067a6a813a34be5b6b1f757600961
Compare 2f18320e731cc3b06bc43cdb4d82dffc4f8f81fc
Diff Diff
Configs CompilationMode:tiered, RunKind:micro

Regressions in System.Collections.Sort<String>

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
Array_ComparerStruct - Duration of single invocation 240.68 μs 282.80 μs 1.18 0.15 False
LinqOrderByExtension - Duration of single invocation 213.08 μs 253.26 μs 1.19 0.07 False
LinqQuery - Duration of single invocation 214.01 μs 249.26 μs 1.16 0.05 False
Array_Comparison - Duration of single invocation 233.63 μs 281.74 μs 1.21 0.13 False
List - Duration of single invocation 230.80 μs 269.02 μs 1.17 0.14 False
Array - Duration of single invocation 224.32 μs 271.32 μs 1.21 0.17 False
Array_ComparerClass - Duration of single invocation 235.83 μs 284.99 μs 1.21 0.17 False

graph
graph
graph
graph
graph
graph
graph
Test Report

Repro

General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md

Payloads

Baseline
Compare

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Collections.Sort&lt;String&gt;*'

Payloads

Baseline
Compare

Histogram

System.Collections.Sort<String>.Array_ComparerStruct(Size: 512)


Description of detection logic

IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsRegressionWindowed: Marked as regression because 282.80378666666655 > 262.63437830000004.
IsChangePoint: Marked as a change because one of 5/13/2023 1:49:08 AM, 5/20/2023 7:45:57 AM, 6/2/2023 6:53:36 PM, 6/5/2023 10:43:22 AM falls between 5/27/2023 6:38:16 PM and 6/5/2023 10:43:22 AM.
IsRegressionStdDev: Marked as regression because -27.5218931740511 (T) = (0 -285219.21895238094) / Math.Sqrt((35488010.78479053 / (24)) + (3308863.3287484846 / (7))) is less than -2.0452296421282288 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (24) + (7) - 2, .025) and -0.15579322644767585 = (246773.5685119047 - 285219.21895238094) / 246773.5685119047 is less than -0.05.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.

JIT Disasms

System.Collections.Sort<String>.LinqOrderByExtension(Size: 512)


Description of detection logic

IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsRegressionWindowed: Marked as regression because 253.26065866666667 > 234.69183755000003.
IsChangePoint: Marked as a change because one of 4/25/2023 3:46:39 AM, 5/26/2023 9:55:14 AM, 6/2/2023 6:53:36 PM, 6/5/2023 10:43:22 AM falls between 5/27/2023 6:38:16 PM and 6/5/2023 10:43:22 AM.
IsRegressionStdDev: Marked as regression because -21.665681347818406 (T) = (0 -250614.69681946628) / Math.Sqrt((49150568.40816188 / (24)) + (2214237.6471708487 / (7))) is less than -2.0452296421282288 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (24) + (7) - 2, .025) and -0.15330552502037817 = (217301.21930616614 - 250614.69681946628) / 217301.21930616614 is less than -0.05.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.

JIT Disasms

System.Collections.Sort<String>.LinqQuery(Size: 512)


Description of detection logic

IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsRegressionWindowed: Marked as regression because 249.26142933333333 > 232.7877699.
IsChangePoint: Marked as a change because one of 4/25/2023 9:59:52 PM, 5/26/2023 9:55:14 AM, 6/2/2023 6:53:36 PM, 6/5/2023 10:43:22 AM falls between 5/27/2023 6:38:16 PM and 6/5/2023 10:43:22 AM.
IsRegressionStdDev: Marked as regression because -18.766436696394923 (T) = (0 -251000.35188278387) / Math.Sqrt((58408438.660455175 / (24)) + (5685731.849366357 / (7))) is less than -2.0452296421282288 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (24) + (7) - 2, .025) and -0.15567254107877324 = (217189.85522359583 - 251000.35188278387) / 217189.85522359583 is less than -0.05.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.

JIT Disasms

System.Collections.Sort<String>.Array_Comparison(Size: 512)


Description of detection logic

IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsRegressionWindowed: Marked as regression because 281.73827066666666 > 253.89817395000003.
IsChangePoint: Marked as a change because one of 5/19/2023 10:30:38 AM, 6/2/2023 6:53:36 PM, 6/5/2023 10:43:22 AM falls between 5/27/2023 6:38:16 PM and 6/5/2023 10:43:22 AM.
IsRegressionStdDev: Marked as regression because -34.11144897021536 (T) = (0 -280901.71866666665) / Math.Sqrt((32505894.62266493 / (24)) + (1933736.6810228333 / (7))) is less than -2.0452296421282288 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (24) + (7) - 2, .025) and -0.18352986804596233 = (237342.31492648553 - 280901.71866666665) / 237342.31492648553 is less than -0.05.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.

JIT Disasms

System.Collections.Sort<String>.List(Size: 512)


Description of detection logic

IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsRegressionWindowed: Marked as regression because 269.024396 > 246.05755494230766.
IsChangePoint: Marked as a change because one of 5/13/2023 1:49:08 AM, 5/19/2023 8:24:48 PM, 6/2/2023 6:53:36 PM, 6/5/2023 10:43:22 AM falls between 5/27/2023 6:38:16 PM and 6/5/2023 10:43:22 AM.
IsRegressionStdDev: Marked as regression because -32.467794440344896 (T) = (0 -269152.1215238095) / Math.Sqrt((34983085.52278327 / (24)) + (272014.575374633 / (7))) is less than -2.0452296421282288 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (24) + (7) - 2, .025) and -0.17311381076405472 = (229433.93816880343 - 269152.1215238095) / 229433.93816880343 is less than -0.05.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.

JIT Disasms

System.Collections.Sort<String>.Array(Size: 512)


Description of detection logic

IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsRegressionWindowed: Marked as regression because 271.31517199999996 > 245.20233394999997.
IsChangePoint: Marked as a change because one of 5/13/2023 1:49:08 AM, 5/20/2023 3:57:43 PM, 6/2/2023 6:53:36 PM, 6/5/2023 10:43:22 AM falls between 5/27/2023 6:38:16 PM and 6/5/2023 10:43:22 AM.
IsRegressionStdDev: Marked as regression because -29.192584994534666 (T) = (0 -269557.5234034537) / Math.Sqrt((39448744.262925684 / (24)) + (1897646.3343733747 / (7))) is less than -2.0452296421282288 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (24) + (7) - 2, .025) and -0.17627491207936258 = (229162.0102029914 - 269557.5234034537) / 229162.0102029914 is less than -0.05.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.

JIT Disasms

System.Collections.Sort<String>.Array_ComparerClass(Size: 512)


Description of detection logic

IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsRegressionWindowed: Marked as regression because 284.9897853333334 > 253.62559705000004.
IsChangePoint: Marked as a change because one of 5/19/2023 10:30:38 AM, 6/2/2023 6:53:36 PM, 6/5/2023 10:43:22 AM falls between 5/27/2023 6:38:16 PM and 6/5/2023 10:43:22 AM.
IsRegressionStdDev: Marked as regression because -32.70111773399092 (T) = (0 -283583.14293877553) / Math.Sqrt((33488824.27026515 / (24)) + (3985248.79086351 / (7))) is less than -2.0452296421282288 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (24) + (7) - 2, .025) and -0.1927945385846994 = (237746.848904304 - 283583.14293877553) / 237746.848904304 is less than -0.05.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.

JIT Disasms

Docs

Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository

Metadata

Metadata

Assignees

Labels

PGOPriority:2Work that is important, but not critical for the releasearch-x64area-CodeGen-coreclrCLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMIos-windowsruntime-coreclrspecific to the CoreCLR runtime

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions