dotnet / perf-autofiling-issues

A landing place for auto-filed performance issues before they receive triage
MIT License
9 stars 4 forks source link

[Perf] Alpine/x64: 2 Improvements on 7/6/2023 1:53:22 PM #19712

Open performanceautofiler[bot] opened 1 year ago

performanceautofiler[bot] commented 1 year ago

Run Information

Name Value
Architecture x64
OS alpine 3.15
Queue TigerAlpine
Baseline 9ea317f17d1ef5988921f611f80834d15a3e8070
Compare 0224f86a886e0aaf72acb6a4f5573236ba929292
Diff Diff
Configs CompilationMode:tiered, RunKind:micro

Improvements in System.Text.Perf_Ascii

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio
[Equals_Chars - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x64_alpine 3.15/System.Text.Perf_Ascii.Equals_Chars(Size%3a%20128).html>) 8.83 ns 6.83 ns 0.77 0.29 False
[Equals_Bytes_Chars - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x64_alpine 3.15/System.Text.Perf_Ascii.Equals_Bytes_Chars(Size%3a%20128).html>) 10.98 ns 6.37 ns 0.58 0.21 True

graph graph Test Report

Repro

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

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Text.Perf_Ascii*'
### Payloads [Baseline]() [Compare]() ### System.Text.Perf_Ascii.Equals_Chars(Size: 128) #### ETL Files #### Histogram ```log ``` #### Description of detection logic ``` IsRegressionBase: Marked as not a regression because the compare was not 5% greater than the baseline, or the value was too small. IsImprovementBase: Marked as improvement because the compare was 5% less than the baseline, and the value was not too small. IsImprovementCheck: Marked as improvement because the three check build points were 0.05 less than the baseline. IsRegressionBase: Marked as not a regression because the compare was not 5% greater than the baseline, or the value was too small. IsImprovementBase: Marked as improvement because the compare was 5% less than the baseline, and the value was not too small. IsImprovementCheck: Marked as improvement because the three check build points were 0.05 less than the baseline. IsImprovementWindowed: Marked as improvement because 6.82956129459 < 7.587771461920382. IsChangePoint: Marked as a change because one of 6/22/2023 7:55:14 AM, 7/6/2023 4:13:54 AM, 7/10/2023 9:23:13 PM falls between 7/1/2023 10:14:52 PM and 7/10/2023 9:23:13 PM. IsImprovementStdDev: Marked as improvement because 34.47622740097009 (T) = (0 -6.727135840913718) / Math.Sqrt((0.48192541791293064 / (134)) + (0.0009957324562455663 / (14))) is greater than 1.9763456545936318 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (134) + (14) - 2, .975) and 0.23685665098725336 = (8.815035667435733 - 6.727135840913718) / 8.815035667435733 is greater than 0.05. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ``` #### JIT Disasms ### System.Text.Perf_Ascii.Equals_Bytes_Chars(Size: 128) #### ETL Files #### Histogram ```log ``` #### Description of detection logic ``` IsRegressionBase: Marked as not a regression because the compare was not 5% greater than the baseline, or the value was too small. IsImprovementBase: Marked as improvement because the compare was 5% less than the baseline, and the value was not too small. IsImprovementCheck: Marked as improvement because the three check build points were 0.05 less than the baseline. IsRegressionBase: Marked as not a regression because the compare was not 5% greater than the baseline, or the value was too small. IsImprovementBase: Marked as improvement because the compare was 5% less than the baseline, and the value was not too small. IsImprovementCheck: Marked as improvement because the three check build points were 0.05 less than the baseline. IsImprovementWindowed: Marked as improvement because 6.371189225705971 < 9.101215701835056. IsChangePoint: Marked as a change because one of 7/6/2023 4:13:54 AM, 7/10/2023 9:23:13 PM falls between 7/1/2023 10:14:52 PM and 7/10/2023 9:23:13 PM. IsImprovementStdDev: Marked as improvement because 56.60116123421707 (T) = (0 -6.3513024238576765) / Math.Sqrt((0.5080588488543678 / (134)) + (0.01825800289347367 / (14))) is greater than 1.9763456545936318 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (134) + (14) - 2, .975) and 0.3888100973256749 = (10.39170051086723 - 6.3513024238576765) / 10.39170051086723 is greater than 0.05. IsChangeEdgeDetector: Marked as regression because Edge Detector said so. ``` #### JIT Disasms ### Docs [Profiling workflow for dotnet/runtime repository](https://github.com/dotnet/performance/blob/master/docs/profiling-workflow-dotnet-runtime.md) [Benchmarking workflow for dotnet/runtime repository](https://github.com/dotnet/performance/blob/master/docs/benchmarking-workflow-dotnet-runtime.md)
BrennanConroy commented 1 year ago

This looks like https://github.com/dotnet/runtime/pull/87141 Big perf gain in Equals_Bytes_Chars as expected, and smaller gains in Equals_Chars due to removal of extra OR.