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] Windows/x64: 12 Improvements on 2/2/2023 8:18:56 AM #12584

Open performanceautofiler[bot] opened 1 year ago

performanceautofiler[bot] commented 1 year ago

Run Information

Architecture x64
OS Windows 10.0.18362
Baseline 2ba2396495c22429035d165e478672c442f81e22
Compare 6aa9f8b5a5d7ea4d79715f0b16f2a5b0ab6ac48d
Diff Diff

Improvements in System.Numerics.Tests.Perf_Quaternion

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
[CreateFromVector3WithScalarBenchmark - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x64_Windows 10.0.18362/System.Numerics.Tests.Perf_Quaternion.CreateFromVector3WithScalarBenchmark.html>) 6.41 ns 0.08 ns 0.01 0.34 False Trace Trace
[InverseBenchmark - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x64_Windows 10.0.18362/System.Numerics.Tests.Perf_Quaternion.InverseBenchmark.html>) 3.15 ns 0.35 ns 0.11 0.05 False Trace Trace
[NormalizeBenchmark - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x64_Windows 10.0.18362/System.Numerics.Tests.Perf_Quaternion.NormalizeBenchmark.html>) 3.51 ns 0.27 ns 0.08 0.03 False 39.248789341270836 6.870193789187128 0.17504218358050067 Trace Trace

graph graph graph Test Report

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Numerics.Tests.Perf_Quaternion*'
### Payloads [Baseline]() [Compare]() ### Histogram #### System.Numerics.Tests.Perf_Quaternion.CreateFromVector3WithScalarBenchmark ```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 0.07794185493781207 < 6.091055019575588. IsChangePoint: Marked as a change because one of 2/2/2023 5:46:53 AM, 2/7/2023 8:22:47 AM falls between 1/29/2023 5:12:48 PM and 2/7/2023 8:22:47 AM. IsImprovementStdDev: Marked as improvement because 429.4714609639252 (T) = (0 -0.07787113602822257) / Math.Sqrt((0.06848500916732923 / (299)) + (8.314720482977511E-07 / (26))) is greater than 1.967335607330539 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (26) - 2, .975) and 0.9881620125753389 = (6.578072203895047 - 0.07787113602822257) / 6.578072203895047 is greater than 0.05. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```### Baseline Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Quaternion.CreateFromVector3WithScalarBenchmark() sub rsp,18 vzeroupper vxorps xmm0,xmm0,xmm0 vmovups [rsp+8],xmm0 vmovups xmm0,[7FFE2F2B4FF0] vmovsd qword ptr [rsp+8],xmm0 vextractps dword ptr [rsp+10],xmm0,2 mov dword ptr [rsp+14],40800000 vmovups xmm0,[rsp+8] vmovups [rdx],xmm0 mov rax,rdx add rsp,18 ret ; Total bytes of code 65 ``` ### Compare Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Quaternion.CreateFromVector3WithScalarBenchmark() vzeroupper vmovups xmm0,[7FF96E994FC0] vmovups [rdx],xmm0 mov rax,rdx ret ; Total bytes of code 19 ``` #### System.Numerics.Tests.Perf_Quaternion.InverseBenchmark ```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 0.35079287345809956 < 2.9876300244571627. IsChangePoint: Marked as a change because one of 2/2/2023 5:46:53 AM, 2/7/2023 8:22:47 AM falls between 1/29/2023 5:12:48 PM and 2/7/2023 8:22:47 AM. IsImprovementStdDev: Marked as improvement because 342.2019474569088 (T) = (0 -0.3399619704860146) / Math.Sqrt((0.002006428365616392 / (299)) + (0.0015602319243828817 / (26))) is greater than 1.967335607330539 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (26) - 2, .975) and 0.8915638028367555 = (3.1351336489071233 - 0.3399619704860146) / 3.1351336489071233 is greater than 0.05. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```### Baseline Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Quaternion.InverseBenchmark() push rsi sub rsp,30 mov rsi,rdx xor ecx,ecx mov [rsp+20],ecx mov [rsp+24],ecx mov [rsp+28],ecx mov dword ptr [rsp+2C],3F800000 mov rcx,rsi lea rdx,[rsp+20] call qword ptr [7FF91A911CD8]; System.Numerics.Quaternion.Inverse(System.Numerics.Quaternion) mov rax,rsi add rsp,30 pop rsi ret ; Total bytes of code 53 ``` ```assembly ; System.Numerics.Quaternion.Inverse(System.Numerics.Quaternion) vzeroupper vmovss xmm0,dword ptr [rdx] vmovss xmm1,dword ptr [rdx+4] vmovss xmm2,dword ptr [rdx+8] vmovss xmm3,dword ptr [rdx+0C] vmulss xmm4,xmm0,xmm0 vmulss xmm5,xmm1,xmm1 vaddss xmm4,xmm4,xmm5 vmulss xmm5,xmm2,xmm2 vaddss xmm4,xmm4,xmm5 vmulss xmm5,xmm3,xmm3 vaddss xmm4,xmm4,xmm5 vmovss xmm5,dword ptr [7FF91A555080] vdivss xmm4,xmm5,xmm4 vxorps xmm0,xmm0,[7FF91A555090] vmulss xmm0,xmm0,xmm4 vxorps xmm1,xmm1,[7FF91A555090] vmulss xmm1,xmm1,xmm4 vxorps xmm2,xmm2,[7FF91A555090] vmulss xmm2,xmm2,xmm4 vmulss xmm3,xmm3,xmm4 vmovss dword ptr [rcx],xmm0 vmovss dword ptr [rcx+4],xmm1 vmovss dword ptr [rcx+8],xmm2 vmovss dword ptr [rcx+0C],xmm3 mov rax,rcx ret ; Total bytes of code 125 ``` ### Compare Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Quaternion.InverseBenchmark() vzeroupper vmovups xmm0,[7FFE36F64FF0] vmulps xmm1,xmm0,[7FFE36F65000] vdpps xmm0,xmm0,xmm0,0FF vdivps xmm0,xmm1,xmm0 vmovups [rdx],xmm0 mov rax,rdx ret ; Total bytes of code 37 ``` #### System.Numerics.Tests.Perf_Quaternion.NormalizeBenchmark ```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 0.27236939110851205 < 3.3383095197126775. IsChangePoint: Marked as a change because one of 2/2/2023 5:46:53 AM, 2/7/2023 8:22:47 AM falls between 1/29/2023 5:12:48 PM and 2/7/2023 8:22:47 AM. IsImprovementStdDev: Marked as improvement because 369.87241364022526 (T) = (0 -0.24778134660732384) / Math.Sqrt((0.0005024953943396132 / (299)) + (0.0019826474690047653 / (26))) is greater than 1.967335607330539 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (26) - 2, .975) and 0.9294687344185921 = (3.513071041116261 - 0.24778134660732384) / 3.513071041116261 is greater than 0.05. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```### Baseline Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Quaternion.NormalizeBenchmark() push rsi sub rsp,30 mov rsi,rdx xor ecx,ecx mov [rsp+20],ecx mov [rsp+24],ecx mov [rsp+28],ecx mov dword ptr [rsp+2C],3F800000 mov rcx,rsi lea rdx,[rsp+20] call qword ptr [7FF7F4691D50]; System.Numerics.Quaternion.Normalize(System.Numerics.Quaternion) mov rax,rsi add rsp,30 pop rsi ret ; Total bytes of code 53 ``` ```assembly ; System.Numerics.Quaternion.Normalize(System.Numerics.Quaternion) vzeroupper vmovss xmm0,dword ptr [rdx] vmovss xmm1,dword ptr [rdx+4] vmovss xmm2,dword ptr [rdx+8] vmovss xmm3,dword ptr [rdx+0C] vmulss xmm4,xmm0,xmm0 vmulss xmm5,xmm1,xmm1 vaddss xmm4,xmm4,xmm5 vmulss xmm5,xmm2,xmm2 vaddss xmm4,xmm4,xmm5 vmulss xmm5,xmm3,xmm3 vaddss xmm4,xmm4,xmm5 vsqrtss xmm4,xmm4,xmm4 vmovss xmm5,dword ptr [7FF7F42D5070] vdivss xmm4,xmm5,xmm4 vmulss xmm0,xmm0,xmm4 vmulss xmm1,xmm1,xmm4 vmulss xmm2,xmm2,xmm4 vmulss xmm3,xmm3,xmm4 vmovss dword ptr [rcx],xmm0 vmovss dword ptr [rcx+4],xmm1 vmovss dword ptr [rcx+8],xmm2 vmovss dword ptr [rcx+0C],xmm3 mov rax,rcx ret ; Total bytes of code 105 ``` ### Compare Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Quaternion.NormalizeBenchmark() vzeroupper vmovups xmm0,[7FFD15A34FD0] vdpps xmm1,xmm0,xmm0,0FF vsqrtps xmm1,xmm1 vdivps xmm0,xmm0,xmm1 vmovups [rdx],xmm0 mov rax,rdx ret ; Total bytes of code 33 ``` ### 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)

Run Information

Architecture x64
OS Windows 10.0.18362
Baseline 2ba2396495c22429035d165e478672c442f81e22
Compare 6aa9f8b5a5d7ea4d79715f0b16f2a5b0ab6ac48d
Diff Diff

Improvements in System.Numerics.Tests.Perf_Vector3

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
[TransformNormalByMatrix4x4Benchmark - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x64_Windows 10.0.18362/System.Numerics.Tests.Perf_Vector3.TransformNormalByMatrix4x4Benchmark.html>) 2.63 ns 0.80 ns 0.30 0.18 False 34.79324164149116 18.8468874285261 0.5416824227740559 Trace Trace
[TransformByMatrix4x4Benchmark - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x64_Windows 10.0.18362/System.Numerics.Tests.Perf_Vector3.TransformByMatrix4x4Benchmark.html>) 3.33 ns 1.05 ns 0.32 0.11 False 37.76361188425369 20.8387007009366 0.5518195866647416 Trace Trace

graph graph Test Report

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Numerics.Tests.Perf_Vector3*'
### Payloads [Baseline]() [Compare]() ### Histogram #### System.Numerics.Tests.Perf_Vector3.TransformNormalByMatrix4x4Benchmark ```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 0.7990557283738554 < 2.5268024395325552. IsChangePoint: Marked as a change because one of 1/6/2023 6:58:01 PM, 2/2/2023 5:46:53 AM, 2/7/2023 8:22:47 AM falls between 1/29/2023 5:12:48 PM and 2/7/2023 8:22:47 AM. IsImprovementStdDev: Marked as improvement because 49.97190503790248 (T) = (0 -0.7998458605875431) / Math.Sqrt((1.1956679399951837 / (299)) + (2.216023992173015E-06 / (26))) is greater than 1.967335607330539 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (26) - 2, .975) and 0.7980157403128793 = (3.9599415411207146 - 0.7998458605875431) / 3.9599415411207146 is greater than 0.05. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```### Baseline Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Vector3.TransformNormalByMatrix4x4Benchmark() sub rsp,48 vzeroupper vmovups xmm0,[7FFA57735380] vmovups [rsp+8],xmm0 vmovups xmm0,[7FFA57735390] vmovups [rsp+18],xmm0 vmovups xmm0,[7FFA577353A0] vmovups [rsp+28],xmm0 vmovups xmm0,[7FFA577353B0] vmovups [rsp+38],xmm0 vmovups xmm0,[7FFA577353C0] vmovaps xmm1,xmm0 vmulss xmm2,xmm1,dword ptr [rsp+8] vmovshdup xmm3,xmm0 vmulss xmm4,xmm3,dword ptr [rsp+18] vaddss xmm2,xmm2,xmm4 vunpckhps xmm0,xmm0,xmm0 vmulss xmm4,xmm0,dword ptr [rsp+28] vaddss xmm2,xmm2,xmm4 vmulss xmm4,xmm1,dword ptr [rsp+0C] vmulss xmm5,xmm3,dword ptr [rsp+1C] vaddss xmm4,xmm4,xmm5 vmulss xmm5,xmm0,dword ptr [rsp+2C] vaddss xmm4,xmm4,xmm5 vinsertps xmm2,xmm2,xmm4,10 vmulss xmm1,xmm1,dword ptr [rsp+10] vmulss xmm3,xmm3,dword ptr [rsp+20] vaddss xmm1,xmm1,xmm3 vmulss xmm0,xmm0,dword ptr [rsp+30] vaddss xmm0,xmm1,xmm0 vinsertps xmm0,xmm2,xmm0,28 vmovsd qword ptr [rdx],xmm0 vextractps dword ptr [rdx+8],xmm0,2 mov rax,rdx add rsp,48 ret ; Total bytes of code 192 ``` ### Compare Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Vector3.TransformNormalByMatrix4x4Benchmark() vzeroupper vmovups xmm0,[7FFBB5CE5310] vmovups xmm1,[7FFBB5CE5320] vmovups xmm2,[7FFBB5CE5330] vmovups xmm3,[7FFBB5CE5340] vmovaps xmm4,xmm3 vbroadcastss xmm4,xmm4 vmulps xmm0,xmm0,xmm4 vmovshdup xmm4,xmm3 vbroadcastss xmm4,xmm4 vmulps xmm1,xmm1,xmm4 vaddps xmm0,xmm0,xmm1 vunpckhps xmm1,xmm3,xmm3 vbroadcastss xmm1,xmm1 vmulps xmm1,xmm2,xmm1 vaddps xmm0,xmm0,xmm1 vmovsd qword ptr [rdx],xmm0 vextractps dword ptr [rdx+8],xmm0,2 mov rax,rdx ret ; Total bytes of code 97 ``` #### System.Numerics.Tests.Perf_Vector3.TransformByMatrix4x4Benchmark ```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 1.0518555832536878 < 3.156509401225574. IsChangePoint: Marked as a change because one of 1/6/2023 6:58:01 PM, 2/2/2023 5:46:53 AM, 2/7/2023 8:22:47 AM falls between 1/29/2023 5:12:48 PM and 2/7/2023 8:22:47 AM. IsImprovementStdDev: Marked as improvement because 56.139766973739455 (T) = (0 -1.0482362107745524) / Math.Sqrt((1.172273686803947 / (299)) + (0.0006339233066330271 / (26))) is greater than 1.967335607330539 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (26) - 2, .975) and 0.7708445323046772 = (4.574345187208238 - 1.0482362107745524) / 4.574345187208238 is greater than 0.05. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```### Baseline Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Vector3.TransformByMatrix4x4Benchmark() sub rsp,48 vzeroupper vmovups xmm0,[7FFBA68A53A0] vmovups [rsp+8],xmm0 vmovups xmm0,[7FFBA68A53B0] vmovups [rsp+18],xmm0 vmovups xmm0,[7FFBA68A53C0] vmovups [rsp+28],xmm0 vmovups xmm0,[7FFBA68A53D0] vmovups [rsp+38],xmm0 vmovups xmm0,[7FFBA68A53E0] vmovaps xmm1,xmm0 vmulss xmm2,xmm1,dword ptr [rsp+8] vmovshdup xmm3,xmm0 vmulss xmm4,xmm3,dword ptr [rsp+18] vaddss xmm2,xmm2,xmm4 vunpckhps xmm0,xmm0,xmm0 vmulss xmm4,xmm0,dword ptr [rsp+28] vaddss xmm2,xmm2,xmm4 vaddss xmm2,xmm2,dword ptr [rsp+38] vmulss xmm4,xmm1,dword ptr [rsp+0C] vmulss xmm5,xmm3,dword ptr [rsp+1C] vaddss xmm4,xmm4,xmm5 vmulss xmm5,xmm0,dword ptr [rsp+2C] vaddss xmm4,xmm4,xmm5 vaddss xmm4,xmm4,dword ptr [rsp+3C] vinsertps xmm2,xmm2,xmm4,10 vmulss xmm1,xmm1,dword ptr [rsp+10] vmulss xmm3,xmm3,dword ptr [rsp+20] vaddss xmm1,xmm1,xmm3 vmulss xmm0,xmm0,dword ptr [rsp+30] vaddss xmm0,xmm1,xmm0 vaddss xmm0,xmm0,dword ptr [rsp+40] vinsertps xmm0,xmm2,xmm0,28 vmovsd qword ptr [rdx],xmm0 vextractps dword ptr [rdx+8],xmm0,2 mov rax,rdx add rsp,48 ret ; Total bytes of code 210 ``` ### Compare Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Vector3.TransformByMatrix4x4Benchmark() vzeroupper vmovups xmm0,[7FFEB52F5310] vmovups xmm1,[7FFEB52F5320] vmovups xmm2,[7FFEB52F5330] vmovups xmm3,[7FFEB52F5340] vmovups xmm4,[7FFEB52F5350] vmovaps xmm5,xmm4 vbroadcastss xmm5,xmm5 vmulps xmm0,xmm0,xmm5 vmovshdup xmm5,xmm4 vbroadcastss xmm5,xmm5 vmulps xmm1,xmm1,xmm5 vaddps xmm0,xmm0,xmm1 vunpckhps xmm1,xmm4,xmm4 vbroadcastss xmm1,xmm1 vmulps xmm1,xmm2,xmm1 vaddps xmm0,xmm0,xmm1 vaddps xmm0,xmm0,xmm3 vmovsd qword ptr [rdx],xmm0 vextractps dword ptr [rdx+8],xmm0,2 mov rax,rdx ret ; Total bytes of code 109 ``` ### 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)

Run Information

Architecture x64
OS Windows 10.0.18362
Baseline 2ba2396495c22429035d165e478672c442f81e22
Compare 6aa9f8b5a5d7ea4d79715f0b16f2a5b0ab6ac48d
Diff Diff

Improvements in System.Numerics.Tests.Perf_Vector2

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
[TransformByMatrix4x4Benchmark - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x64_Windows 10.0.18362/System.Numerics.Tests.Perf_Vector2.TransformByMatrix4x4Benchmark.html>) 1.54 ns 0.40 ns 0.26 0.20 False 22.821094484859465 12.863328170011393 0.5636595641171154 Trace Trace
[TransformNormalByMatrix4x4Benchmark - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x64_Windows 10.0.18362/System.Numerics.Tests.Perf_Vector2.TransformNormalByMatrix4x4Benchmark.html>) 1.49 ns 0.35 ns 0.24 0.21 False Trace Trace

graph graph Test Report

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Numerics.Tests.Perf_Vector2*'
### Payloads [Baseline]() [Compare]() ### Histogram #### System.Numerics.Tests.Perf_Vector2.TransformByMatrix4x4Benchmark ```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 0.40274778040395326 < 1.4647211166278593. IsChangePoint: Marked as a change because one of 1/6/2023 6:58:01 PM, 2/2/2023 5:46:53 AM, 2/7/2023 8:22:47 AM falls between 1/29/2023 5:12:48 PM and 2/7/2023 8:22:47 AM. IsImprovementStdDev: Marked as improvement because 54.06453893678898 (T) = (0 -0.41618095981266107) / Math.Sqrt((0.28108519512271274 / (299)) + (0.004690141023531941 / (26))) is greater than 1.967335607330539 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (26) - 2, .975) and 0.8130288113085244 = (2.2259095785041434 - 0.41618095981266107) / 2.2259095785041434 is greater than 0.05. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```### Baseline Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Vector2.TransformByMatrix4x4Benchmark() sub rsp,48 vzeroupper vmovups xmm0,[7FFEB5305290] vmovups [rsp+8],xmm0 vmovups xmm0,[7FFEB53052A0] vmovups [rsp+18],xmm0 vmovups xmm0,[7FFEB53052B0] vmovups [rsp+28],xmm0 vmovups xmm0,[7FFEB53052C0] vmovups [rsp+38],xmm0 vmovsd xmm0,qword ptr [7FFEB53052D0] vmovaps xmm1,xmm0 vmulss xmm2,xmm1,dword ptr [rsp+8] vmovshdup xmm0,xmm0 vmulss xmm3,xmm0,dword ptr [rsp+18] vaddss xmm2,xmm2,xmm3 vaddss xmm2,xmm2,dword ptr [rsp+38] vmulss xmm1,xmm1,dword ptr [rsp+0C] vmulss xmm0,xmm0,dword ptr [rsp+1C] vaddss xmm0,xmm1,xmm0 vaddss xmm0,xmm0,dword ptr [rsp+3C] vinsertps xmm0,xmm2,xmm0,1C vmovq rax,xmm0 add rsp,48 ret ; Total bytes of code 139 ``` ### Compare Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Vector2.TransformByMatrix4x4Benchmark() vzeroupper vmovups xmm0,[7FFBA67D5230] vmovups xmm1,[7FFBA67D5240] vmovups xmm2,[7FFBA67D5250] vmovsd xmm3,qword ptr [7FFBA67D5260] vmovaps xmm4,xmm3 vbroadcastss xmm4,xmm4 vmulps xmm0,xmm0,xmm4 vmovshdup xmm3,xmm3 vbroadcastss xmm3,xmm3 vmulps xmm1,xmm1,xmm3 vaddps xmm0,xmm0,xmm1 vaddps xmm0,xmm0,xmm2 vmovq rax,xmm0 ret ; Total bytes of code 75 ``` #### System.Numerics.Tests.Perf_Vector2.TransformNormalByMatrix4x4Benchmark ```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 0.3542787747079121 < 1.0398562689837139. IsChangePoint: Marked as a change because one of 1/6/2023 6:58:01 PM, 2/2/2023 5:46:53 AM, 2/7/2023 8:22:47 AM falls between 1/29/2023 5:12:48 PM and 2/7/2023 8:22:47 AM. IsImprovementStdDev: Marked as improvement because 41.84017847577377 (T) = (0 -0.3489348072342183) / Math.Sqrt((0.38084858939790034 / (299)) + (0.0008190155066871484 / (26))) is greater than 1.967335607330539 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (26) - 2, .975) and 0.8124553083874483 = (1.8605421685572545 - 0.3489348072342183) / 1.8605421685572545 is greater than 0.05. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```### Baseline Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Vector2.TransformNormalByMatrix4x4Benchmark() sub rsp,48 vzeroupper vmovups xmm0,[7FFC6D9F5280] vmovups [rsp+8],xmm0 vmovups xmm0,[7FFC6D9F5290] vmovups [rsp+18],xmm0 vmovups xmm0,[7FFC6D9F52A0] vmovups [rsp+28],xmm0 vmovups xmm0,[7FFC6D9F52B0] vmovups [rsp+38],xmm0 vmovsd xmm0,qword ptr [7FFC6D9F52C0] vmovaps xmm1,xmm0 vmulss xmm2,xmm1,dword ptr [rsp+8] vmovshdup xmm0,xmm0 vmulss xmm3,xmm0,dword ptr [rsp+18] vaddss xmm2,xmm2,xmm3 vmulss xmm1,xmm1,dword ptr [rsp+0C] vmulss xmm0,xmm0,dword ptr [rsp+1C] vaddss xmm0,xmm1,xmm0 vinsertps xmm0,xmm2,xmm0,1C vmovq rax,xmm0 add rsp,48 ret ; Total bytes of code 127 ``` ### Compare Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Vector2.TransformNormalByMatrix4x4Benchmark() vzeroupper vmovups xmm0,[7FFBB5D05220] vmovups xmm1,[7FFBB5D05230] vmovsd xmm2,qword ptr [7FFBB5D05240] vmovaps xmm3,xmm2 vbroadcastss xmm3,xmm3 vmulps xmm0,xmm0,xmm3 vmovshdup xmm2,xmm2 vbroadcastss xmm2,xmm2 vmulps xmm1,xmm1,xmm2 vaddps xmm0,xmm0,xmm1 vmovq rax,xmm0 ret ; Total bytes of code 63 ``` ### 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)

Run Information

Architecture x64
OS Windows 10.0.18362
Baseline 2ba2396495c22429035d165e478672c442f81e22
Compare 6aa9f8b5a5d7ea4d79715f0b16f2a5b0ab6ac48d
Diff Diff

Improvements in System.Numerics.Tests.Perf_Matrix4x4

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
[Transpose - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x64_Windows 10.0.18362/System.Numerics.Tests.Perf_Matrix4x4.Transpose.html>) 8.63 ns 0.93 ns 0.11 0.02 False 40.92652324859435 17.959273693860535 0.43881747747720934 Trace Trace
[CreateShadowBenchmark - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x64_Windows 10.0.18362/System.Numerics.Tests.Perf_Matrix4x4.CreateShadowBenchmark.html>) 12.79 ns 8.31 ns 0.65 0.02 False 73.50533504725135 56.59947127035928 0.770004942280387 Trace Trace

graph graph Test Report

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Numerics.Tests.Perf_Matrix4x4*'
### Payloads [Baseline]() [Compare]() ### Histogram #### System.Numerics.Tests.Perf_Matrix4x4.Transpose ```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 0.9345098068012517 < 7.891234219514961. IsChangePoint: Marked as a change because one of 2/2/2023 5:46:53 AM, 2/7/2023 8:22:47 AM falls between 1/29/2023 5:12:48 PM and 2/7/2023 8:22:47 AM. IsImprovementStdDev: Marked as improvement because 257.4307994328145 (T) = (0 -0.9543949363616254) / Math.Sqrt((0.2675584877279325 / (299)) + (0.0014556505182606553 / (26))) is greater than 1.967335607330539 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (26) - 2, .975) and 0.8926731402849447 = (8.892414619187331 - 0.9543949363616254) / 8.892414619187331 is greater than 0.05. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```### Baseline Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Matrix4x4.Transpose() push rsi sub rsp,0A0 vzeroupper mov rsi,rdx vmovups xmm0,[7FFC90EF5060] vmovups [rsp+60],xmm0 vmovups xmm0,[7FFC90EF5070] vmovups [rsp+70],xmm0 vmovups xmm0,[7FFC90EF5080] vmovups [rsp+80],xmm0 vmovups xmm0,[7FFC90EF5090] vmovups [rsp+90],xmm0 lea rcx,[rsp+20] lea rdx,[rsp+60] call qword ptr [7FFC9142BB10]; System.Numerics.Matrix4x4+Impl.Transpose(Impl ByRef) vmovdqu ymm0,ymmword ptr [rsp+20] vmovdqu ymmword ptr [rsi],ymm0 vmovdqu ymm0,ymmword ptr [rsp+40] vmovdqu ymmword ptr [rsi+20],ymm0 mov rax,rsi add rsp,0A0 pop rsi ret ; Total bytes of code 125 ``` ```assembly ; System.Numerics.Matrix4x4+Impl.Transpose(Impl ByRef) vzeroupper vmovups xmm0,[rdx] vmovups xmm1,[rdx+10] vmovups xmm2,[rdx+20] vmovups xmm3,[rdx+30] vunpcklps xmm4,xmm0,xmm2 vunpcklps xmm5,xmm1,xmm3 vunpckhps xmm0,xmm0,xmm2 vunpckhps xmm1,xmm1,xmm3 vunpcklps xmm2,xmm4,xmm5 vunpckhps xmm3,xmm4,xmm5 vunpcklps xmm4,xmm0,xmm1 vunpckhps xmm0,xmm0,xmm1 vmovups [rcx],xmm2 vmovups [rcx+10],xmm3 vmovups [rcx+20],xmm4 vmovups [rcx+30],xmm0 mov rax,rcx ret ; Total bytes of code 77 ``` ### Compare Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Matrix4x4.Transpose() vzeroupper vmovups xmm0,[7FFE7D995050] vunpcklps xmm0,xmm0,[7FFE7D995060] vmovups xmm1,[7FFE7D995070] vunpcklps xmm1,xmm1,[7FFE7D995080] vmovups xmm2,[7FFE7D995050] vunpckhps xmm2,xmm2,[7FFE7D995060] vmovups xmm3,[7FFE7D995070] vunpckhps xmm3,xmm3,[7FFE7D995080] vunpcklps xmm4,xmm0,xmm1 vunpckhps xmm0,xmm0,xmm1 vunpcklps xmm1,xmm2,xmm3 vunpckhps xmm2,xmm2,xmm3 vmovups [rdx],xmm4 vmovups [rdx+10],xmm0 vmovups [rdx+20],xmm1 vmovups [rdx+30],xmm2 mov rax,rdx ret ; Total bytes of code 106 ``` #### System.Numerics.Tests.Perf_Matrix4x4.CreateShadowBenchmark ```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 8.308780436991002 < 11.954850195587053. IsChangePoint: Marked as a change because one of 1/6/2023 6:58:01 PM, 2/2/2023 5:46:53 AM, 2/7/2023 8:22:47 AM falls between 1/29/2023 5:12:48 PM and 2/7/2023 8:22:47 AM. IsImprovementStdDev: Marked as improvement because 55.92142893261515 (T) = (0 -8.259270350966256) / Math.Sqrt((3.706729669042814 / (299)) + (0.0007728076117285348 / (26))) is greater than 1.967335607330539 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (26) - 2, .975) and 0.43012577411802416 = (14.493145988807708 - 8.259270350966256) / 14.493145988807708 is greater than 0.05. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```### Baseline Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Matrix4x4.CreateShadowBenchmark() sub rsp,18 vzeroupper vmovaps [rsp],xmm6 vxorps xmm0,xmm0,xmm0 vxorps xmm1,xmm1,xmm1 vdpps xmm0,xmm0,xmm1,71 vsubss xmm1,xmm0,dword ptr [7FFA57575160] vandps xmm1,xmm1,[7FFA57575170] vmovss xmm2,dword ptr [7FFA57575180] vucomiss xmm2,xmm1 jbe short M00_L00 vxorps xmm1,xmm1,xmm1 vxorps xmm2,xmm2,xmm2 jmp short M00_L01 M00_L00: vsqrtss xmm0,xmm0,xmm0 vmovaps xmm1,xmm0 vbroadcastss xmm2,xmm1 vxorps xmm1,xmm1,xmm1 vdivps xmm1,xmm1,xmm2 vxorps xmm2,xmm2,xmm2 vdivss xmm2,xmm2,xmm0 M00_L01: vmovups xmm0,[7FFA57575190] vdpps xmm0,xmm0,xmm1,71 vxorps xmm3,xmm3,xmm3 vsubps xmm1,xmm3,xmm1 vmovaps xmm3,xmm1 vbroadcastss xmm3,xmm3 vmovups xmm4,[7FFA57575190] vmulps xmm3,xmm3,xmm4 vmovaps xmm4,xmm3 vmovshdup xmm5,xmm3 vinsertps xmm4,xmm4,xmm5,10 vunpckhps xmm3,xmm3,xmm3 vinsertps xmm3,xmm4,xmm3,28 vmovaps xmm4,xmm0 vinsertps xmm4,xmm4,xmm4,3E vaddps xmm3,xmm3,xmm4 vmovshdup xmm4,xmm1 vbroadcastss xmm4,xmm4 vmovups xmm5,[7FFA57575190] vmulps xmm4,xmm4,xmm5 vmovaps xmm5,xmm4 vmovshdup xmm6,xmm4 vinsertps xmm5,xmm5,xmm6,10 vunpckhps xmm4,xmm4,xmm4 vinsertps xmm4,xmm5,xmm4,28 vinsertps xmm5,xmm5,xmm0,1D vaddps xmm4,xmm4,xmm5 vunpckhps xmm1,xmm1,xmm1 vbroadcastss xmm1,xmm1 vmovups xmm5,[7FFA57575190] vmulps xmm1,xmm1,xmm5 vmovaps xmm5,xmm1 vmovshdup xmm6,xmm1 vinsertps xmm5,xmm5,xmm6,10 vunpckhps xmm1,xmm1,xmm1 vinsertps xmm1,xmm5,xmm1,28 vinsertps xmm5,xmm5,xmm0,2B vaddps xmm1,xmm1,xmm5 vxorps xmm2,xmm2,[7FFA575751A0] vbroadcastss xmm2,xmm2 vmovups xmm5,[7FFA57575190] vmulps xmm2,xmm2,xmm5 vmovaps xmm5,xmm2 vmovshdup xmm6,xmm2 vinsertps xmm5,xmm5,xmm6,10 vunpckhps xmm2,xmm2,xmm2 vinsertps xmm2,xmm5,xmm2,20 vinsertps xmm0,xmm2,xmm0,30 vmovups [rdx],xmm3 vmovups [rdx+10],xmm4 vmovups [rdx+20],xmm1 vmovups [rdx+30],xmm0 mov rax,rdx vmovaps xmm6,[rsp] add rsp,18 ret ; Total bytes of code 373 ``` ### Compare Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Matrix4x4.CreateShadowBenchmark() sub rsp,18 vzeroupper vmovaps [rsp],xmm6 vxorps xmm0,xmm0,xmm0 vdpps xmm0,xmm0,xmm0,7F vsubss xmm1,xmm0,dword ptr [7FFAA4845130] vandps xmm1,xmm1,[7FFAA4845140] vmovss xmm2,dword ptr [7FFAA4845150] vucomiss xmm2,xmm1 jbe short M00_L00 vxorps xmm1,xmm1,xmm1 jmp short M00_L01 M00_L00: vsqrtss xmm0,xmm0,xmm0 vxorps xmm1,xmm1,xmm1 vmovaps xmm2,xmm0 vbroadcastss xmm2,xmm2 vdivps xmm1,xmm1,xmm2 vxorps xmm2,xmm2,xmm2 vshufps xmm2,xmm2,xmm2,0FF vdivss xmm0,xmm2,xmm0 vinsertps xmm1,xmm1,xmm0,30 M00_L01: vmovaps xmm0,xmm1 vmovups xmm2,[7FFAA4845160] vdpps xmm2,xmm2,xmm0,7F vxorps xmm3,xmm3,xmm3 vsubps xmm0,xmm3,xmm0 vmovaps xmm3,xmm2 vinsertps xmm3,xmm3,xmm3,3E vmovaps xmm4,xmm0 vbroadcastss xmm4,xmm4 vmovups xmm5,[7FFAA4845160] vmulps xmm4,xmm4,xmm5 vinsertps xmm4,xmm4,xmm4,38 vaddps xmm3,xmm4,xmm3 vinsertps xmm4,xmm4,xmm2,1D vmovshdup xmm5,xmm0 vbroadcastss xmm5,xmm5 vmovups xmm6,[7FFAA4845160] vmulps xmm5,xmm5,xmm6 vinsertps xmm5,xmm5,xmm5,38 vaddps xmm4,xmm5,xmm4 vinsertps xmm5,xmm5,xmm2,2B vunpckhps xmm0,xmm0,xmm0 vbroadcastss xmm0,xmm0 vmulps xmm0,xmm0,xmm6 vinsertps xmm0,xmm0,xmm0,38 vaddps xmm0,xmm0,xmm5 vshufps xmm1,xmm1,xmm1,0FF vxorps xmm1,xmm1,[7FFAA4845170] vbroadcastss xmm1,xmm1 vmulps xmm1,xmm1,xmm6 vinsertps xmm1,xmm1,xmm2,30 vmovups [rdx],xmm3 vmovups [rdx+10],xmm4 vmovups [rdx+20],xmm0 vmovups [rdx+30],xmm1 mov rax,rdx vmovaps xmm6,[rsp] add rsp,18 ret ; Total bytes of code 291 ``` ### 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)
performanceautofiler[bot] commented 1 year ago

Run Information

Architecture x64
OS Windows 10.0.18362
Baseline 2ba2396495c22429035d165e478672c442f81e22
Compare 6aa9f8b5a5d7ea4d79715f0b16f2a5b0ab6ac48d
Diff Diff

Improvements in System.Numerics.Tests.Perf_Vector4

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
[TransformVector2ByMatrix4x4Benchmark - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x64_Windows 10.0.18362/System.Numerics.Tests.Perf_Vector4.TransformVector2ByMatrix4x4Benchmark.html>) 2.97 ns 0.47 ns 0.16 0.09 False Trace Trace
[TransformVector3ByMatrix4x4Benchmark - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x64_Windows 10.0.18362/System.Numerics.Tests.Perf_Vector4.TransformVector3ByMatrix4x4Benchmark.html>) 4.01 ns 0.80 ns 0.20 0.10 False 43.7853233986975 20.102109092668456 0.45910610068181984 Trace Trace
[TransformByMatrix4x4Benchmark - Duration of single invocation](<https://pvscmdupload.z22.web.core.windows.net/reports/allTestHistory/refs/heads/main_x64_Windows 10.0.18362/System.Numerics.Tests.Perf_Vector4.TransformByMatrix4x4Benchmark.html>) 3.57 ns 0.80 ns 0.22 0.13 False 43.789907898046174 19.86330915031961 0.45360472546702646 Trace Trace

graph graph graph Test Report

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Numerics.Tests.Perf_Vector4*'
### Payloads [Baseline]() [Compare]() ### Histogram #### System.Numerics.Tests.Perf_Vector4.TransformVector2ByMatrix4x4Benchmark ```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 0.4677139438179196 < 2.822700458691581. IsChangePoint: Marked as a change because one of 1/7/2023 12:45:06 AM, 2/2/2023 5:46:53 AM, 2/7/2023 8:22:47 AM falls between 1/29/2023 5:12:48 PM and 2/7/2023 8:22:47 AM. IsImprovementStdDev: Marked as improvement because 60.649859398778574 (T) = (0 -0.4684338964254463) / Math.Sqrt((1.095176670794964 / (299)) + (3.147303078084014E-06 / (26))) is greater than 1.967335607330539 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (26) - 2, .975) and 0.8868267874501001 = (4.1390880922365465 - 0.4684338964254463) / 4.1390880922365465 is greater than 0.05. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```### Baseline Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Vector4.TransformVector2ByMatrix4x4Benchmark() sub rsp,48 vzeroupper vmovups xmm0,[7FFE2F2B5390] vmovups [rsp+8],xmm0 vmovups xmm0,[7FFE2F2B53A0] vmovups [rsp+18],xmm0 vmovups xmm0,[7FFE2F2B53B0] vmovups [rsp+28],xmm0 vmovups xmm0,[7FFE2F2B53C0] vmovups [rsp+38],xmm0 vmovsd xmm0,qword ptr [7FFE2F2B53D0] vmovaps xmm1,xmm0 vmulss xmm2,xmm1,dword ptr [rsp+8] vmovshdup xmm0,xmm0 vmulss xmm3,xmm0,dword ptr [rsp+18] vaddss xmm2,xmm2,xmm3 vaddss xmm2,xmm2,dword ptr [rsp+38] vmulss xmm3,xmm1,dword ptr [rsp+0C] vmulss xmm4,xmm0,dword ptr [rsp+1C] vaddss xmm3,xmm3,xmm4 vaddss xmm3,xmm3,dword ptr [rsp+3C] vinsertps xmm2,xmm2,xmm3,10 vmulss xmm3,xmm1,dword ptr [rsp+10] vmulss xmm4,xmm0,dword ptr [rsp+20] vaddss xmm3,xmm3,xmm4 vaddss xmm3,xmm3,dword ptr [rsp+40] vinsertps xmm2,xmm2,xmm3,20 vmulss xmm1,xmm1,dword ptr [rsp+14] vmulss xmm0,xmm0,dword ptr [rsp+24] vaddss xmm0,xmm1,xmm0 vaddss xmm0,xmm0,dword ptr [rsp+44] vinsertps xmm0,xmm2,xmm0,30 vmovups [rdx],xmm0 mov rax,rdx add rsp,48 ret ; Total bytes of code 197 ``` ### Compare Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Vector4.TransformVector2ByMatrix4x4Benchmark() vzeroupper vmovups xmm0,[7FFA575052F0] vmovups xmm1,[7FFA57505300] vmovups xmm2,[7FFA57505310] vmovsd xmm3,qword ptr [7FFA57505320] vmovaps xmm4,xmm3 vbroadcastss xmm4,xmm4 vmulps xmm0,xmm0,xmm4 vmovshdup xmm3,xmm3 vbroadcastss xmm3,xmm3 vmulps xmm1,xmm1,xmm3 vaddps xmm0,xmm0,xmm1 vaddps xmm0,xmm0,xmm2 vmovups [rdx],xmm0 mov rax,rdx ret ; Total bytes of code 77 ``` #### System.Numerics.Tests.Perf_Vector4.TransformVector3ByMatrix4x4Benchmark ```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 0.7989004891389014 < 3.3542761804117536. IsChangePoint: Marked as a change because one of 1/6/2023 6:58:01 PM, 2/2/2023 5:46:53 AM, 2/7/2023 8:22:47 AM falls between 1/29/2023 5:12:48 PM and 2/7/2023 8:22:47 AM. IsImprovementStdDev: Marked as improvement because 57.55195628080385 (T) = (0 -0.7999608308548823) / Math.Sqrt((1.6723618037356205 / (299)) + (2.3992056205534987E-06 / (26))) is greater than 1.967335607330539 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (26) - 2, .975) and 0.843273030843652 = (5.104168319983625 - 0.7999608308548823) / 5.104168319983625 is greater than 0.05. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```### Baseline Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Vector4.TransformVector3ByMatrix4x4Benchmark() sub rsp,48 vzeroupper vmovups xmm0,[7FFE370E53C0] vmovups [rsp+8],xmm0 vmovups xmm0,[7FFE370E53D0] vmovups [rsp+18],xmm0 vmovups xmm0,[7FFE370E53E0] vmovups [rsp+28],xmm0 vmovups xmm0,[7FFE370E53F0] vmovups [rsp+38],xmm0 vmovups xmm0,[7FFE370E5400] vmovaps xmm1,xmm0 vmulss xmm2,xmm1,dword ptr [rsp+8] vmovshdup xmm3,xmm0 vmulss xmm4,xmm3,dword ptr [rsp+18] vaddss xmm2,xmm2,xmm4 vunpckhps xmm0,xmm0,xmm0 vmulss xmm4,xmm0,dword ptr [rsp+28] vaddss xmm2,xmm2,xmm4 vaddss xmm2,xmm2,dword ptr [rsp+38] vmulss xmm4,xmm1,dword ptr [rsp+0C] vmulss xmm5,xmm3,dword ptr [rsp+1C] vaddss xmm4,xmm4,xmm5 vmulss xmm5,xmm0,dword ptr [rsp+2C] vaddss xmm4,xmm4,xmm5 vaddss xmm4,xmm4,dword ptr [rsp+3C] vinsertps xmm2,xmm2,xmm4,10 vmulss xmm4,xmm1,dword ptr [rsp+10] vmulss xmm5,xmm3,dword ptr [rsp+20] vaddss xmm4,xmm4,xmm5 vmulss xmm5,xmm0,dword ptr [rsp+30] vaddss xmm4,xmm4,xmm5 vaddss xmm4,xmm4,dword ptr [rsp+40] vinsertps xmm2,xmm2,xmm4,20 vmulss xmm1,xmm1,dword ptr [rsp+14] vmulss xmm3,xmm3,dword ptr [rsp+24] vaddss xmm1,xmm1,xmm3 vmulss xmm0,xmm0,dword ptr [rsp+34] vaddss xmm0,xmm1,xmm0 vaddss xmm0,xmm0,dword ptr [rsp+44] vinsertps xmm0,xmm2,xmm0,30 vmovups [rdx],xmm0 mov rax,rdx add rsp,48 ret ; Total bytes of code 241 ``` ### Compare Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Vector4.TransformVector3ByMatrix4x4Benchmark() vzeroupper vmovups xmm0,[7FFAA4845310] vmovups xmm1,[7FFAA4845320] vmovups xmm2,[7FFAA4845330] vmovups xmm3,[7FFAA4845340] vmovups xmm4,[7FFAA4845350] vmovaps xmm5,xmm4 vbroadcastss xmm5,xmm5 vmulps xmm0,xmm0,xmm5 vmovshdup xmm5,xmm4 vbroadcastss xmm5,xmm5 vmulps xmm1,xmm1,xmm5 vaddps xmm0,xmm0,xmm1 vunpckhps xmm1,xmm4,xmm4 vbroadcastss xmm1,xmm1 vmulps xmm1,xmm2,xmm1 vaddps xmm0,xmm0,xmm1 vaddps xmm0,xmm0,xmm3 vmovups [rdx],xmm0 mov rax,rdx ret ; Total bytes of code 102 ``` #### System.Numerics.Tests.Perf_Vector4.TransformByMatrix4x4Benchmark ```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 0.8000406276305023 < 3.381274950467329. IsChangePoint: Marked as a change because one of 1/7/2023 8:10:22 PM, 2/2/2023 5:46:53 AM, 2/7/2023 8:22:47 AM falls between 1/29/2023 5:12:48 PM and 2/7/2023 8:22:47 AM. IsImprovementStdDev: Marked as improvement because 56.23195120830512 (T) = (0 -0.8002828176963465) / Math.Sqrt((1.780432604929649 / (299)) + (3.031239377347523E-06 / (26))) is greater than 1.967335607330539 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (299) + (26) - 2, .975) and 0.8442887731198128 = (5.139531899726972 - 0.8002828176963465) / 5.139531899726972 is greater than 0.05. IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so. ```### Baseline Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Vector4.TransformByMatrix4x4Benchmark() sub rsp,48 vzeroupper vmovups xmm0,[7FF7D50053C0] vmovups [rsp+8],xmm0 vmovups xmm0,[7FF7D50053D0] vmovups [rsp+18],xmm0 vmovups xmm0,[7FF7D50053E0] vmovups [rsp+28],xmm0 vmovups xmm0,[7FF7D50053F0] vmovups [rsp+38],xmm0 vmovups xmm0,[7FF7D5005400] vmovaps xmm1,xmm0 vmulss xmm2,xmm1,dword ptr [rsp+8] vmovshdup xmm3,xmm0 vmulss xmm4,xmm3,dword ptr [rsp+18] vaddss xmm2,xmm2,xmm4 vunpckhps xmm0,xmm0,xmm0 vmulss xmm4,xmm0,dword ptr [rsp+28] vaddss xmm2,xmm2,xmm4 vaddss xmm2,xmm2,dword ptr [rsp+38] vmulss xmm4,xmm1,dword ptr [rsp+0C] vmulss xmm5,xmm3,dword ptr [rsp+1C] vaddss xmm4,xmm4,xmm5 vmulss xmm5,xmm0,dword ptr [rsp+2C] vaddss xmm4,xmm4,xmm5 vaddss xmm4,xmm4,dword ptr [rsp+3C] vinsertps xmm2,xmm2,xmm4,10 vmulss xmm4,xmm1,dword ptr [rsp+10] vmulss xmm5,xmm3,dword ptr [rsp+20] vaddss xmm4,xmm4,xmm5 vmulss xmm5,xmm0,dword ptr [rsp+30] vaddss xmm4,xmm4,xmm5 vaddss xmm4,xmm4,dword ptr [rsp+40] vinsertps xmm2,xmm2,xmm4,20 vmulss xmm1,xmm1,dword ptr [rsp+14] vmulss xmm3,xmm3,dword ptr [rsp+24] vaddss xmm1,xmm1,xmm3 vmulss xmm0,xmm0,dword ptr [rsp+34] vaddss xmm0,xmm1,xmm0 vaddss xmm0,xmm0,dword ptr [rsp+44] vinsertps xmm0,xmm2,xmm0,30 vmovups [rdx],xmm0 mov rax,rdx add rsp,48 ret ; Total bytes of code 241 ``` ### Compare Jit Disasm ```assembly ; System.Numerics.Tests.Perf_Vector4.TransformByMatrix4x4Benchmark() vzeroupper vmovups xmm0,[7FF7F42E5310] vmovups xmm1,[7FF7F42E5320] vmovups xmm2,[7FF7F42E5330] vmovups xmm3,[7FF7F42E5340] vmovups xmm4,[7FF7F42E5350] vmovaps xmm5,xmm4 vbroadcastss xmm5,xmm5 vmulps xmm0,xmm0,xmm5 vmovshdup xmm5,xmm4 vbroadcastss xmm5,xmm5 vmulps xmm1,xmm1,xmm5 vaddps xmm0,xmm0,xmm1 vunpckhps xmm1,xmm4,xmm4 vbroadcastss xmm1,xmm1 vmulps xmm1,xmm2,xmm1 vaddps xmm0,xmm0,xmm1 vaddps xmm0,xmm0,xmm3 vmovups [rdx],xmm0 mov rax,rdx ret ; Total bytes of code 102 ``` ### 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)