Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Perf] Linux/x64: 71 Regressions on 7/2/2024 7:47:18 PM #37893

Closed
performanceautofiler bot opened this issue Jul 9, 2024 · 9 comments · Fixed by dotnet/runtime#104698
Closed

[Perf] Linux/x64: 71 Regressions on 7/2/2024 7:47:18 PM #37893

performanceautofiler bot opened this issue Jul 9, 2024 · 9 comments · Fixed by dotnet/runtime#104698

Comments

@performanceautofiler
Copy link

Run Information

Name Value
Architecture x64
OS ubuntu 22.04
Queue TigerUbuntu
Baseline b59816c21a6138174bf84fcc5b88a6ece8e1e41c
Compare 1d16fd14fa772621c7b09ebd00f83610207b1abf
Diff Diff
Configs CompilationMode:wasm, RunKind:micro

Regressions in System.Buffers.Tests.SearchValuesCharTests

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio
725.42 ns 807.08 ns 1.11 0.08 False
138.16 ns 268.08 ns 1.94 0.14 True
156.34 ns 319.61 ns 2.04 0.17 True
166.35 ns 263.59 ns 1.58 0.20 True
138.02 ns 252.80 ns 1.83 0.21 True
131.17 ns 275.82 ns 2.10 0.20 True
837.22 ns 925.71 ns 1.11 0.11 False
147.03 ns 277.80 ns 1.89 0.15 True

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

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

System.Buffers.Tests.SearchValuesCharTests.LastIndexOfAny(Values: "abcdefABCDEF0123456789Ü")

ETL Files

Histogram

JIT Disasms

System.Buffers.Tests.SearchValuesCharTests.ContainsAny(Values: "abcdefABCDEF0123456789")

ETL Files

Histogram

JIT Disasms

System.Buffers.Tests.SearchValuesCharTests.IndexOfAnyExcept(Values: "abcdefABCDEF0123456789Ü")

ETL Files

Histogram

JIT Disasms

System.Buffers.Tests.SearchValuesCharTests.LastIndexOfAnyExcept(Values: "abcdefABCDEF0123456789Ü")

ETL Files

Histogram

JIT Disasms

System.Buffers.Tests.SearchValuesCharTests.LastIndexOfAnyExcept(Values: "abcdefABCDEF0123456789")

ETL Files

Histogram

JIT Disasms

System.Buffers.Tests.SearchValuesCharTests.IndexOfAny(Values: "abcdefABCDEF0123456789")

ETL Files

Histogram

JIT Disasms

System.Buffers.Tests.SearchValuesCharTests.ContainsAny(Values: "abcdefABCDEF0123456789Ü")

ETL Files

Histogram

JIT Disasms

System.Buffers.Tests.SearchValuesCharTests.IndexOfAnyExcept(Values: "abcdefABCDEF0123456789")

ETL Files

Histogram

JIT Disasms

Docs

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


Run Information

Name Value
Architecture x64
OS ubuntu 22.04
Queue TigerUbuntu
Baseline b59816c21a6138174bf84fcc5b88a6ece8e1e41c
Compare 1fe7d189db4a49bc676ddb206456709e089c2293
Diff Diff
Configs CompilationMode:wasm, RunKind:micro

Regressions in System.Text.Json.Serialization.Tests.ReadJson<BinaryData>

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio
7.82 μs 8.64 μs 1.10 0.06 False

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
python3 .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Text.Json.Serialization.Tests.ReadJson&lt;BinaryData&gt;*'

System.Text.Json.Serialization.Tests.ReadJson<BinaryData>.DeserializeFromString(Mode: Reflection)

ETL Files

Histogram

JIT Disasms

Docs

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


Run Information

Name Value
Architecture x64
OS ubuntu 22.04
Queue TigerUbuntu
Baseline c07a81f90938a8c3ec5b056b78ddd1718dc9931c
Compare 2ea6ae57874c452923af059cbcb57d109564353c
Diff Diff
Configs CompilationMode:wasm, RunKind:micro

Regressions in System.Text.Perf_Ascii

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio
219.56 ns 456.69 ns 2.08 0.17 True
684.59 ns 723.76 ns 1.06 0.03 False
217.83 ns 458.69 ns 2.11 0.21 True
152.54 ns 219.22 ns 1.44 0.12 True
112.60 ns 224.91 ns 2.00 0.14 True
178.62 ns 393.88 ns 2.21 0.10 True
46.45 ns 52.29 ns 1.13 0.21 False
180.32 ns 337.35 ns 1.87 0.19 True
88.60 ns 109.05 ns 1.23 0.15 False
118.22 ns 179.64 ns 1.52 0.19 False
173.87 ns 403.13 ns 2.32 0.13 True
91.84 ns 117.59 ns 1.28 0.22 False
350.86 ns 456.87 ns 1.30 0.07 False
145.98 ns 185.94 ns 1.27 0.15 False
150.55 ns 274.61 ns 1.82 0.17 False
451.97 ns 515.99 ns 1.14 0.06 False

graph
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

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

System.Text.Perf_Ascii.ToLower_Chars(Size: 128)

ETL Files

Histogram

JIT Disasms

System.Text.Perf_Ascii.EqualsIgnoreCase_ExactlyTheSame_Bytes_Chars(Size: 128)

ETL Files

Histogram

JIT Disasms

System.Text.Perf_Ascii.ToUpper_Chars(Size: 128)

ETL Files

Histogram

JIT Disasms

System.Text.Perf_Ascii.EqualsIgnoreCase_ExactlyTheSame_Chars(Size: 128)

ETL Files

Histogram

JIT Disasms

System.Text.Perf_Ascii.ToLowerInPlace_Bytes(Size: 128)

ETL Files

Histogram

JIT Disasms

System.Text.Perf_Ascii.ToLowerInPlace_Chars(Size: 128)

ETL Files

Histogram

JIT Disasms

System.Text.Perf_Ascii.IsValid_Bytes(Size: 128)

ETL Files

Histogram

JIT Disasms

System.Text.Perf_Ascii.ToLower_Bytes_Chars(Size: 128)

ETL Files

Histogram

JIT Disasms

System.Text.Perf_Ascii.Equals_Bytes(Size: 128)

ETL Files

Histogram

JIT Disasms

System.Text.Perf_Ascii.FromUtf16(Size: 128)

ETL Files

Histogram

JIT Disasms

System.Text.Perf_Ascii.ToUpperInPlace_Chars(Size: 128)

ETL Files

Histogram

JIT Disasms

System.Text.Perf_Ascii.EqualsIgnoreCase_ExactlyTheSame_Bytes(Size: 128)

ETL Files

Histogram

JIT Disasms

System.Text.Perf_Ascii.EqualsIgnoreCase_DifferentCase_Bytes(Size: 128)

ETL Files

Histogram

JIT Disasms

System.Text.Perf_Ascii.Equals_Chars(Size: 128)

ETL Files

Histogram

JIT Disasms

System.Text.Perf_Ascii.ToLower_Bytes(Size: 128)

ETL Files

Histogram

JIT Disasms

System.Text.Perf_Ascii.EqualsIgnoreCase_DifferentCase_Chars(Size: 128)

ETL Files

Histogram

JIT Disasms

Docs

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


Run Information

Name Value
Architecture x64
OS ubuntu 22.04
Queue TigerUbuntu
Baseline c07a81f90938a8c3ec5b056b78ddd1718dc9931c
Compare 2ea6ae57874c452923af059cbcb57d109564353c
Diff Diff
Configs CompilationMode:wasm, RunKind:micro

Regressions in System.Numerics.Tensors.Tests.Perf_BinaryIntegerTensorPrimitives<Byte>

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio
798.08 ns 1.85 μs 2.32 0.09 True
136.70 ns 189.95 ns 1.39 0.24 False
511.20 ns 1.55 μs 3.03 0.14 True
156.13 ns 218.94 ns 1.40 0.25 False

graph
graph
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
python3 .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Numerics.Tensors.Tests.Perf_BinaryIntegerTensorPrimitives&lt;Byte&gt;*'

System.Numerics.Tensors.Tests.Perf_BinaryIntegerTensorPrimitives<Byte>.TrailingZeroCount(BufferLength: 3079)

ETL Files

Histogram

JIT Disasms

System.Numerics.Tensors.Tests.Perf_BinaryIntegerTensorPrimitives<Byte>.PopCount(BufferLength: 128)

ETL Files

Histogram

JIT Disasms

System.Numerics.Tensors.Tests.Perf_BinaryIntegerTensorPrimitives<Byte>.PopCount(BufferLength: 3079)

ETL Files

Histogram

JIT Disasms

System.Numerics.Tensors.Tests.Perf_BinaryIntegerTensorPrimitives<Byte>.TrailingZeroCount(BufferLength: 128)

ETL Files

Histogram

JIT Disasms

Docs

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


Run Information

Name Value
Architecture x64
OS ubuntu 22.04
Queue TigerUbuntu
Baseline b59816c21a6138174bf84fcc5b88a6ece8e1e41c
Compare 2ea6ae57874c452923af059cbcb57d109564353c
Diff Diff
Configs CompilationMode:wasm, RunKind:micro

Regressions in System.Text.Tests.Perf_Encoding

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio
487.12 ns 718.18 ns 1.47 0.07 True
896.02 ns 1.15 μs 1.28 0.06 False

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
python3 .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Text.Tests.Perf_Encoding*'

System.Text.Tests.Perf_Encoding.GetBytes(size: 512, encName: "ascii")

ETL Files

Histogram

JIT Disasms

System.Text.Tests.Perf_Encoding.GetBytes(size: 512, encName: "utf-8")

ETL Files

Histogram

JIT Disasms

Docs

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

Copy link
Author

Run Information

Name Value
Architecture x64
OS ubuntu 22.04
Queue TigerUbuntu
Baseline c07a81f90938a8c3ec5b056b78ddd1718dc9931c
Compare 1d16fd14fa772621c7b09ebd00f83610207b1abf
Diff Diff
Configs CompilationMode:wasm, RunKind:micro

Regressions in System.Numerics.Tensors.Tests.Perf_FloatingPointTensorPrimitives<Single>

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio
13.36 μs 20.03 μs 1.50 0.10 False
3.89 μs 4.28 μs 1.10 0.16 False
4.57 μs 4.87 μs 1.07 0.18 False
304.49 μs 478.38 μs 1.57 0.09 False
3.96 μs 4.38 μs 1.10 0.15 False
86.76 μs 97.45 μs 1.12 0.13 False
3.92 μs 4.35 μs 1.11 0.21 False
90.85 μs 98.39 μs 1.08 0.15 False

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

git clone https://github.com/dotnet/performance.git
python3 .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Numerics.Tensors.Tests.Perf_FloatingPointTensorPrimitives&lt;Single&gt;*'

System.Numerics.Tensors.Tests.Perf_FloatingPointTensorPrimitives<Single>.Sin(BufferLength: 128)

ETL Files

Histogram

JIT Disasms

System.Numerics.Tensors.Tests.Perf_FloatingPointTensorPrimitives<Single>.FusedMultiplyAdd_ScalarAddend(BufferLength: 128)

ETL Files

Histogram

JIT Disasms

System.Numerics.Tensors.Tests.Perf_FloatingPointTensorPrimitives<Single>.Truncate(BufferLength: 128)

ETL Files

Histogram

JIT Disasms

System.Numerics.Tensors.Tests.Perf_FloatingPointTensorPrimitives<Single>.Sin(BufferLength: 3079)

ETL Files

Histogram

JIT Disasms

System.Numerics.Tensors.Tests.Perf_FloatingPointTensorPrimitives<Single>.FusedMultiplyAdd_Vectors(BufferLength: 128)

ETL Files

Histogram

JIT Disasms

System.Numerics.Tensors.Tests.Perf_FloatingPointTensorPrimitives<Single>.FusedMultiplyAdd_ScalarAddend(BufferLength: 3079)

ETL Files

Histogram

JIT Disasms

System.Numerics.Tensors.Tests.Perf_FloatingPointTensorPrimitives<Single>.FusedMultiplyAdd_ScalarMultiplier(BufferLength: 128)

ETL Files

Histogram

JIT Disasms

System.Numerics.Tensors.Tests.Perf_FloatingPointTensorPrimitives<Single>.FusedMultiplyAdd_Vectors(BufferLength: 3079)

ETL Files

Histogram

JIT Disasms

Docs

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


Run Information

Name Value
Architecture x64
OS ubuntu 22.04
Queue TigerUbuntu
Baseline c07a81f90938a8c3ec5b056b78ddd1718dc9931c
Compare 1fe7d189db4a49bc676ddb206456709e089c2293
Diff Diff
Configs CompilationMode:wasm, RunKind:micro

Regressions in System.Numerics.Tensors.Tests.Perf_NumberTensorPrimitives<Single>

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio
90.64 μs 105.35 μs 1.16 0.14 False
3.59 μs 4.16 μs 1.16 0.13 False
3.86 μs 4.47 μs 1.16 0.13 False

graph
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
python3 .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Numerics.Tensors.Tests.Perf_NumberTensorPrimitives&lt;Single&gt;*'

System.Numerics.Tensors.Tests.Perf_NumberTensorPrimitives<Single>.Max_Vector(BufferLength: 3079)

ETL Files

Histogram

JIT Disasms

System.Numerics.Tensors.Tests.Perf_NumberTensorPrimitives<Single>.Max_Vector(BufferLength: 128)

ETL Files

Histogram

JIT Disasms

System.Numerics.Tensors.Tests.Perf_NumberTensorPrimitives<Single>.Max_Scalar(BufferLength: 128)

ETL Files

Histogram

JIT Disasms

Docs

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


Run Information

Name Value
Architecture x64
OS ubuntu 22.04
Queue TigerUbuntu
Baseline c07a81f90938a8c3ec5b056b78ddd1718dc9931c
Compare 1fe7d189db4a49bc676ddb206456709e089c2293
Diff Diff
Configs CompilationMode:wasm, RunKind:micro

Regressions in System.Numerics.Tensors.Tests.Perf_FloatingPointTensorPrimitives<Double>

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio
3.58 μs 6.77 μs 1.89 0.11 False
206.87 μs 230.29 μs 1.11 0.21 False
143.77 μs 176.83 μs 1.23 0.17 False
211.13 μs 226.94 μs 1.07 0.17 False
1.14 ms 1.32 ms 1.16 0.20 False
8.77 μs 9.84 μs 1.12 0.24 False
6.21 μs 7.17 μs 1.16 0.17 False
49.16 μs 56.53 μs 1.15 0.17 False

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

git clone https://github.com/dotnet/performance.git
python3 .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Numerics.Tensors.Tests.Perf_FloatingPointTensorPrimitives&lt;Double&gt;*'

System.Numerics.Tensors.Tests.Perf_FloatingPointTensorPrimitives<Double>.CosineSimilarity(BufferLength: 128)

ETL Files

Histogram

JIT Disasms

System.Numerics.Tensors.Tests.Perf_FloatingPointTensorPrimitives<Double>.FusedMultiplyAdd_Vectors(BufferLength: 3079)

ETL Files

Histogram

JIT Disasms

System.Numerics.Tensors.Tests.Perf_FloatingPointTensorPrimitives<Double>.Truncate(BufferLength: 3079)

ETL Files

Histogram

JIT Disasms

System.Numerics.Tensors.Tests.Perf_FloatingPointTensorPrimitives<Double>.FusedMultiplyAdd_ScalarMultiplier(BufferLength: 3079)

ETL Files

Histogram

JIT Disasms

System.Numerics.Tensors.Tests.Perf_FloatingPointTensorPrimitives<Double>.Sin(BufferLength: 3079)

ETL Files

Histogram

JIT Disasms

System.Numerics.Tensors.Tests.Perf_FloatingPointTensorPrimitives<Double>.FusedMultiplyAdd_ScalarMultiplier(BufferLength: 128)

ETL Files

Histogram

JIT Disasms

System.Numerics.Tensors.Tests.Perf_FloatingPointTensorPrimitives<Double>.Truncate(BufferLength: 128)

ETL Files

Histogram

JIT Disasms

System.Numerics.Tensors.Tests.Perf_FloatingPointTensorPrimitives<Double>.Sin(BufferLength: 128)

ETL Files

Histogram

JIT Disasms

Docs

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


Run Information

Name Value
Architecture x64
OS ubuntu 22.04
Queue TigerUbuntu
Baseline c07a81f90938a8c3ec5b056b78ddd1718dc9931c
Compare 1fe7d189db4a49bc676ddb206456709e089c2293
Diff Diff
Configs CompilationMode:wasm, RunKind:micro

Regressions in System.Text.Perf_Utf8Encoding

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio
645.81 μs 683.89 μs 1.06 0.00 False
182.48 μs 246.25 μs 1.35 0.01 True
504.39 μs 733.11 μs 1.45 0.10 True

graph
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
python3 .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Text.Perf_Utf8Encoding*'

System.Text.Perf_Utf8Encoding.GetString(Input: Greek)

ETL Files

Histogram

JIT Disasms

System.Text.Perf_Utf8Encoding.GetBytes(Input: EnglishAllAscii)

ETL Files

Histogram

JIT Disasms

System.Text.Perf_Utf8Encoding.GetString(Input: EnglishMostlyAscii)

ETL Files

Histogram

JIT Disasms

Docs

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


Run Information

Name Value
Architecture x64
OS ubuntu 22.04
Queue TigerUbuntu
Baseline c07a81f90938a8c3ec5b056b78ddd1718dc9931c
Compare 1d16fd14fa772621c7b09ebd00f83610207b1abf
Diff Diff
Configs CompilationMode:wasm, RunKind:micro

Regressions in System.Numerics.Tensors.Tests.Perf_NumberTensorPrimitives<Int32>

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio
893.42 ns 967.69 ns 1.08 0.02 False

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
python3 .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Numerics.Tensors.Tests.Perf_NumberTensorPrimitives&lt;Int32&gt;*'

System.Numerics.Tensors.Tests.Perf_NumberTensorPrimitives<Int32>.IndexOfMax(BufferLength: 128)

ETL Files

Histogram

JIT Disasms

Docs

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


Run Information

Name Value
Architecture x64
OS ubuntu 22.04
Queue TigerUbuntu
Baseline c07a81f90938a8c3ec5b056b78ddd1718dc9931c
Compare 1fe7d189db4a49bc676ddb206456709e089c2293
Diff Diff
Configs CompilationMode:wasm, RunKind:micro

Regressions in System.Buffers.Tests.SearchValuesByteTests

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio
128.91 ns 178.23 ns 1.38 0.16 False
121.22 ns 143.62 ns 1.18 0.16 False
631.78 ns 761.59 ns 1.21 0.08 False
118.70 ns 140.84 ns 1.19 0.14 False
615.06 ns 785.21 ns 1.28 0.07 False

graph
graph
graph
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
python3 .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Buffers.Tests.SearchValuesByteTests*'

System.Buffers.Tests.SearchValuesByteTests.IndexOfAnyExcept(Values: "abcdefABCDEF0123456789")

ETL Files

Histogram

JIT Disasms

System.Buffers.Tests.SearchValuesByteTests.IndexOfAny(Values: "abcdefABCDEF0123456789")

ETL Files

Histogram

JIT Disasms

System.Buffers.Tests.SearchValuesByteTests.IndexOfAnyExcept(Values: "abcdefABCDEF0123456789Ü")

ETL Files

Histogram

JIT Disasms

System.Buffers.Tests.SearchValuesByteTests.ContainsAny(Values: "abcdefABCDEF0123456789")

ETL Files

Histogram

JIT Disasms

System.Buffers.Tests.SearchValuesByteTests.ContainsAny(Values: "abcdefABCDEF0123456789Ü")

ETL Files

Histogram

JIT Disasms

Docs

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

Copy link
Author

Run Information

Name Value
Architecture x64
OS ubuntu 22.04
Queue TigerUbuntu
Baseline b59816c21a6138174bf84fcc5b88a6ece8e1e41c
Compare 1d16fd14fa772621c7b09ebd00f83610207b1abf
Diff Diff
Configs CompilationMode:wasm, RunKind:micro

Regressions in System.Globalization.Tests.StringSearch

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio
275.95 ns 543.38 ns 1.97 0.10 True
269.45 ns 371.70 ns 1.38 0.11 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
python3 .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Globalization.Tests.StringSearch*'

System.Globalization.Tests.StringSearch.LastIndexOf_Word_NotFound(Options: (en-US, Ordinal, False))

ETL Files

Histogram

JIT Disasms

System.Globalization.Tests.StringSearch.IndexOf_Word_NotFound(Options: (en-US, Ordinal, False))

ETL Files

Histogram

JIT Disasms

Docs

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


Run Information

Name Value
Architecture x64
OS ubuntu 22.04
Queue TigerUbuntu
Baseline c07a81f90938a8c3ec5b056b78ddd1718dc9931c
Compare 1fe7d189db4a49bc676ddb206456709e089c2293
Diff Diff
Configs CompilationMode:wasm, RunKind:micro

Regressions in System.Buffers.Text.Tests.Base64Tests

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio
535.87 ns 799.17 ns 1.49 0.05 True

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
python3 .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Buffers.Text.Tests.Base64Tests*'

System.Buffers.Text.Tests.Base64Tests.Base64IsValid(NumberOfBytes: 1000)

ETL Files

Histogram

JIT Disasms

Docs

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


Run Information

Name Value
Architecture x64
OS ubuntu 22.04
Queue TigerUbuntu
Baseline c07a81f90938a8c3ec5b056b78ddd1718dc9931c
Compare 1fe7d189db4a49bc676ddb206456709e089c2293
Diff Diff
Configs CompilationMode:wasm, RunKind:micro

Regressions in System.Tests.Perf_Uri

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio
675.88 ns 1.47 μs 2.18 0.11 True

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
python3 .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Tests.Perf_Uri*'

System.Tests.Perf_Uri.EscapeDataString(input: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")

ETL Files

Histogram

JIT Disasms

Docs

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


Run Information

Name Value
Architecture x64
OS ubuntu 22.04
Queue TigerUbuntu
Baseline c07a81f90938a8c3ec5b056b78ddd1718dc9931c
Compare 1fe7d189db4a49bc676ddb206456709e089c2293
Diff Diff
Configs CompilationMode:wasm, RunKind:micro

Regressions in System.IO.Tests.Perf_File

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio
41.72 μs 47.66 μs 1.14 0.27 False
63.70 μs 69.16 μs 1.09 0.03 False

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
python3 .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.IO.Tests.Perf_File*'

System.IO.Tests.Perf_File.WriteAllText(size: 10000)

ETL Files

Histogram

JIT Disasms

System.IO.Tests.Perf_File.AppendAllText(size: 10000)

ETL Files

Histogram

JIT Disasms

Docs

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


Run Information

Name Value
Architecture x64
OS ubuntu 22.04
Queue TigerUbuntu
Baseline b59816c21a6138174bf84fcc5b88a6ece8e1e41c
Compare 1fe7d189db4a49bc676ddb206456709e089c2293
Diff Diff
Configs CompilationMode:wasm, RunKind:micro

Regressions in System.IO.Tests.BinaryWriterExtendedTests

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio
3.73 μs 6.91 μs 1.85 0.08 True
1.67 ms 2.53 ms 1.52 0.02 False
818.77 μs 1.64 ms 2.00 0.03 True

graph
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
python3 .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.IO.Tests.BinaryWriterExtendedTests*'

System.IO.Tests.BinaryWriterExtendedTests.WriteAsciiString(StringLengthInChars: 8000)

ETL Files

Histogram

JIT Disasms

System.IO.Tests.BinaryWriterExtendedTests.WriteAsciiString(StringLengthInChars: 2000000)

ETL Files

Histogram

JIT Disasms

System.IO.Tests.BinaryWriterExtendedTests.WriteAsciiCharArray(StringLengthInChars: 2000000)

ETL Files

Histogram

JIT Disasms

Docs

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


Run Information

Name Value
Architecture x64
OS ubuntu 22.04
Queue TigerUbuntu
Baseline b59816c21a6138174bf84fcc5b88a6ece8e1e41c
Compare 1d16fd14fa772621c7b09ebd00f83610207b1abf
Diff Diff
Configs CompilationMode:wasm, RunKind:micro

Regressions in System.Numerics.Tensors.Tests.Perf_BinaryIntegerTensorPrimitives<Int32>

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio
34.74 μs 42.96 μs 1.24 0.37 False
859.48 ns 1.51 μs 1.76 0.17 True
18.08 μs 30.05 μs 1.66 0.18 False

graph
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
python3 .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Numerics.Tensors.Tests.Perf_BinaryIntegerTensorPrimitives&lt;Int32&gt;*'

System.Numerics.Tensors.Tests.Perf_BinaryIntegerTensorPrimitives<Int32>.TrailingZeroCount(BufferLength: 3079)

ETL Files

Histogram

JIT Disasms

System.Numerics.Tensors.Tests.Perf_BinaryIntegerTensorPrimitives<Int32>.PopCount(BufferLength: 128)

ETL Files

Histogram

JIT Disasms

System.Numerics.Tensors.Tests.Perf_BinaryIntegerTensorPrimitives<Int32>.PopCount(BufferLength: 3079)

ETL Files

Histogram

JIT Disasms

Docs

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

@lewing
Copy link
Member

lewing commented Jul 9, 2024

@tannergooding
Copy link
Member

It could be, but its a bit surprising if that's the case?

Maybe this is a case where the jiterpreter needs to be updated to handle it as well, CC. @kg ?

@kg
Copy link

kg commented Jul 9, 2024

Adding interp intrinsics without updating the jiterpreter will usually regress performance, yes.

@tannergooding
Copy link
Member

Adding interp intrinsics without updating the jiterpreter will usually regress performance, yes.

I see, that's a bit unfortunate. I'll keep it in mind for future PRs, however.

Is there something we can do in the meantime to improve the handling? I don't see anything in https://github.com/dotnet/runtime/blob/main/src/mono/browser/runtime/jiterpreter-trace-generator.ts or related files that looks to handle the concept of "bitcasting". However, I don't believe WASM needs to track the actual type and the PackedSimd support instead interprets the 128-bit value based on the opcode its passed into so perhaps we just need to handle it as a "no-op" and simply return the input value untouched?

Based on other code, this looks like it'd be roughly:

append_ldloc(builder, getArgU16(ip, 2), WasmOpcode.PREFIX_simd, WasmSimdOpcode.v128_load);
append_simd_store(builder, ip);

handled as part of emit_simd_2 (which it looks like means it has two operands on the stack where arg 1 is the destination and arg 2 is the source)?

@kg
Copy link

kg commented Jul 10, 2024

Adding interp intrinsics without updating the jiterpreter will usually regress performance, yes.

I see, that's a bit unfortunate. I'll keep it in mind for future PRs, however.

Is there something we can do in the meantime to improve the handling? I don't see anything in https://github.com/dotnet/runtime/blob/main/src/mono/browser/runtime/jiterpreter-trace-generator.ts or related files that looks to handle the concept of "bitcasting". However, I don't believe WASM needs to track the actual type and the PackedSimd support instead interprets the 128-bit value based on the opcode its passed into so perhaps we just need to handle it as a "no-op" and simply return the input value untouched?

Based on other code, this looks like it'd be roughly:

append_ldloc(builder, getArgU16(ip, 2), WasmOpcode.PREFIX_simd, WasmSimdOpcode.v128_load);
append_simd_store(builder, ip);

handled as part of emit_simd_2 (which it looks like means it has two operands on the stack where arg 1 is the destination and arg 2 is the source)?

That all looks right to me. A bitcast would indeed be a no-op in the WASM SIMD128 model since it's all just 'v128'. If the src and dest addresses are the same you can skip the operation entirely, but I don't know how often that would happen.

@tannergooding
Copy link
Member

Are you aware of any other locations that might need to be updated, or is it mostly relegated to jiterpreter-trace-generator.ts?

@kg
Copy link

kg commented Jul 10, 2024

Are you aware of any other locations that might need to be updated, or is it mostly relegated to jiterpreter-trace-generator.ts?

The trace generator is the only part of the jiterpreter you should need to modify for most SIMD stuff. The table of intrinsics is automatically generated during the build process.

The jiterpreter's statistics system will automatically track which SIMD intrinsics were unhandled during the JIT process (if it's turned on) and you can use that to try and identify where there are coverage gaps.

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

Successfully merging a pull request may close this issue.

3 participants