-
Notifications
You must be signed in to change notification settings - Fork 4.8k
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
Regressions in MicroBenchmarks.Serializers #69730
Comments
Tagging subscribers to this area: @JulieLeeMSFT Issue DetailsRun Information
Regressions in MicroBenchmarks.Serializers.Json_FromStream<Location>
Reprogit clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'MicroBenchmarks.Serializers.Json_FromStream<Location>*' PayloadsHistogramMicroBenchmarks.Serializers.Json_FromStream<Location>.DataContractJsonSerializer_
Description of detection logic
DocsProfiling workflow for dotnet/runtime repository
Regressions in MicroBenchmarks.Serializers.Xml_FromStream<Location>
Reprogit clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'MicroBenchmarks.Serializers.Xml_FromStream<Location>*' PayloadsHistogramMicroBenchmarks.Serializers.Xml_FromStream<Location>.DataContractSerializer_
Description of detection logic
DocsProfiling workflow for dotnet/runtime repository Run Information
Regressions in MicroBenchmarks.Serializers.Xml_FromStream<CollectionsOfPrimitives>
Reprogit clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'MicroBenchmarks.Serializers.Xml_FromStream<CollectionsOfPrimitives>*' PayloadsHistogramMicroBenchmarks.Serializers.Xml_FromStream<CollectionsOfPrimitives>.DataContractSerializer_
Description of detection logic
DocsProfiling workflow for dotnet/runtime repository Run Information
Regressions in MicroBenchmarks.Serializers.Xml_FromStream<SimpleStructWithProperties>
Reprogit clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'MicroBenchmarks.Serializers.Xml_FromStream<SimpleStructWithProperties>*' PayloadsHistogramMicroBenchmarks.Serializers.Xml_FromStream<SimpleStructWithProperties>.DataContractSerializer_
Description of detection logic
DocsProfiling workflow for dotnet/runtime repository Run Information
Regressions in MicroBenchmarks.Serializers.Json_FromStream<MyEventsListerViewModel>
Reprogit clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'MicroBenchmarks.Serializers.Json_FromStream<MyEventsListerViewModel>*' PayloadsHistogramMicroBenchmarks.Serializers.Json_FromStream<MyEventsListerViewModel>.DataContractJsonSerializer_
Description of detection logic
DocsProfiling workflow for dotnet/runtime repository Run Information
Regressions in MicroBenchmarks.Serializers.Xml_FromStream<LoginViewModel>
Reprogit clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'MicroBenchmarks.Serializers.Xml_FromStream<LoginViewModel>*' PayloadsHistogramMicroBenchmarks.Serializers.Xml_FromStream<LoginViewModel>.DataContractSerializer_
Description of detection logic
DocsProfiling workflow for dotnet/runtime repository Run Information
Regressions in MicroBenchmarks.Serializers.Xml_FromStream<XmlElement>
Reprogit clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'MicroBenchmarks.Serializers.Xml_FromStream<XmlElement>*' PayloadsHistogramMicroBenchmarks.Serializers.Xml_FromStream<XmlElement>.DataContractSerializer_
Description of detection logic
DocsProfiling workflow for dotnet/runtime repository Run Information
Regressions in MicroBenchmarks.Serializers.Json_FromStream<LoginViewModel>
Reprogit clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'MicroBenchmarks.Serializers.Json_FromStream<LoginViewModel>*' PayloadsHistogramMicroBenchmarks.Serializers.Json_FromStream<LoginViewModel>.DataContractJsonSerializer_
Description of detection logic
DocsProfiling workflow for dotnet/runtime repository Run Information
Regressions in MicroBenchmarks.Serializers.Json_FromStream<CollectionsOfPrimitives>
Reprogit clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'MicroBenchmarks.Serializers.Json_FromStream<CollectionsOfPrimitives>*' PayloadsHistogramMicroBenchmarks.Serializers.Json_FromStream<CollectionsOfPrimitives>.DataContractJsonSerializer_
Description of detection logic
DocsProfiling workflow for dotnet/runtime repository
|
More regressions on ubuntu/x64: dotnet/perf-autofiling-issues#5472 |
More windows x64 regression: dotnet/perf-autofiling-issues#5488 |
windows x86 regression: dotnet/perf-autofiling-issues#5439, dotnet/perf-autofiling-issues#5438 |
More regressions on arm64: dotnet/perf-autofiling-issues#5534 |
More arm64 regressions, on ubuntu: dotnet/perf-autofiling-issues#5536 |
More regressions, potentially related: dotnet/perf-autofiling-issues#5537 |
dotnet#69272 changed DCS to no longer call Stream.Read inside a loop, but instead call the new ReadAtLeast method. ReadAtLeast only takes a Span<byte>, and not a byte[]. This caused a regression because the internal encoding stream wrapper classes don't override Read(Span<byte>), so the base implementation is used. The base implementation is slower because it needs to rent a byte[] from the pool, and do 2 copies. Overriding Read(Span<byte>) on the internal encoding stream wrapper classes allows ReadAtLeast to be just as fast. Fix dotnet#69730
) * Fix Stream.ReadAtLeast perf regression in DataContractSerializer #69272 changed DCS to no longer call Stream.Read inside a loop, but instead call the new ReadAtLeast method. ReadAtLeast only takes a Span<byte>, and not a byte[]. This caused a regression because the internal encoding stream wrapper classes don't override Read(Span<byte>), so the base implementation is used. The base implementation is slower because it needs to rent a byte[] from the pool, and do 2 copies. Overriding Read(Span<byte>) on the internal encoding stream wrapper classes allows ReadAtLeast to be just as fast. Fix #69730 * Add Span overloads for Stream Read and Write implementations that don't currently override the Span overloads.
Run Information
Regressions in MicroBenchmarks.Serializers.Json_FromStream<Location>
Test Report
Repro
Payloads
Baseline
Compare
Histogram
MicroBenchmarks.Serializers.Json_FromStream<Location>.DataContractJsonSerializer_
Description of detection logic
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Regressions in MicroBenchmarks.Serializers.Xml_FromStream<Location>
Test Report
Repro
Payloads
Baseline
Compare
Histogram
MicroBenchmarks.Serializers.Xml_FromStream<Location>.DataContractSerializer_
Description of detection logic
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
Regressions in MicroBenchmarks.Serializers.Xml_FromStream<CollectionsOfPrimitives>
Test Report
Repro
Payloads
Baseline
Compare
Histogram
MicroBenchmarks.Serializers.Xml_FromStream<CollectionsOfPrimitives>.DataContractSerializer_
Description of detection logic
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
Regressions in MicroBenchmarks.Serializers.Xml_FromStream<SimpleStructWithProperties>
Test Report
Repro
Payloads
Baseline
Compare
Histogram
MicroBenchmarks.Serializers.Xml_FromStream<SimpleStructWithProperties>.DataContractSerializer_
Description of detection logic
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
Regressions in MicroBenchmarks.Serializers.Json_FromStream<MyEventsListerViewModel>
Test Report
Repro
Payloads
Baseline
Compare
Histogram
MicroBenchmarks.Serializers.Json_FromStream<MyEventsListerViewModel>.DataContractJsonSerializer_
Description of detection logic
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
Regressions in MicroBenchmarks.Serializers.Xml_FromStream<LoginViewModel>
Test Report
Repro
Payloads
Baseline
Compare
Histogram
MicroBenchmarks.Serializers.Xml_FromStream<LoginViewModel>.DataContractSerializer_
Description of detection logic
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
Regressions in MicroBenchmarks.Serializers.Xml_FromStream<XmlElement>
Test Report
Repro
Payloads
Baseline
Compare
Histogram
MicroBenchmarks.Serializers.Xml_FromStream<XmlElement>.DataContractSerializer_
Description of detection logic
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
Regressions in MicroBenchmarks.Serializers.Json_FromStream<LoginViewModel>
Test Report
Repro
Payloads
Baseline
Compare
Histogram
MicroBenchmarks.Serializers.Json_FromStream<LoginViewModel>.DataContractJsonSerializer_
Description of detection logic
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
Regressions in MicroBenchmarks.Serializers.Json_FromStream<CollectionsOfPrimitives>
Test Report
Repro
Payloads
Baseline
Compare
Histogram
MicroBenchmarks.Serializers.Json_FromStream<CollectionsOfPrimitives>.DataContractJsonSerializer_
Description of detection logic
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
The text was updated successfully, but these errors were encountered: