Skip to content

[Perf] Windows 10.0.25094/arm64 : Regressions in MicroBenchmarks.Serializers.Xml_ToStream<MyEventsListerViewModel> on 8/13/2022 7:28:42 AM #74439

Closed

Description

@performanceautofiler

Run Information

Architecture arm64
OS Windows 10.0.25094
Baseline 5eb776dc21d89063d66287461313c1e79073b57b
Compare 75228aca01a24087d21a76f32bf8d87dc9888648
Diff Diff

Regressions in MicroBenchmarks.Serializers.Xml_ToStream<MyEventsListerViewModel>

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
XmlSerializer_ - Duration of single invocation 526.85 μs 820.75 μs 1.56 0.62 False

graph
Test Report

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'MicroBenchmarks.Serializers.Xml_ToStream&lt;MyEventsListerViewModel&gt;*'
Details

Payloads

Baseline
Compare

Histogram

MicroBenchmarks.Serializers.Xml_ToStream<MyEventsListerViewModel>.XmlSerializer_


Description of detection logic

IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsRegressionWindowed: Marked as regression because we could not find enough baseline builds for window checking.
IsChangePoint: Marked as a change because one of 7/2/2022 7:35:06 PM, 7/6/2022 3:55:24 AM, 8/13/2022 2:59:44 AM, 8/18/2022 11:13:04 AM falls between 8/9/2022 9:33:37 PM and 8/18/2022 11:13:04 AM.
IsRegressionStdDev: Marked as regression because -13.301195798386802 (T) = (0 -780924.1216518995) / Math.Sqrt((1816446026.8913484 / (16)) + (2945738217.569549 / (26))) is less than -2.0210753903043583 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (16) + (26) - 2, .025) and -0.3450330993912639 = (580598.4417820876 - 780924.1216518995) / 580598.4417820876 is less than -0.05.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsChangeEdgeDetector: Marked not as a regression because Edge Detector said so.

Docs

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

Activity

  1. 3 remaining items

  2. changed the title [-][Perf] Windows 10.0.25094/arm64 : Regression on 8/13/2022 7:28:42 AM[/-] [+][Perf] Windows 10.0.25094/arm64 : Regressions in MicroBenchmarks.Serializers.Xml_ToStream<MyEventsListerViewModel> on 8/13/2022 7:28:42 AM[/+] on Aug 23, 2022
  3. DrewScoggins commented on Aug 23, 2022

    @DrewScoggins
    Member

    Seems related to this batch of commit:
    #73730
    #73731
    #73827
    #73729
    @StephenBonikowsky

  4. DrewScoggins commented on Aug 23, 2022

    @DrewScoggins
    Member
  5. added this to the Future milestone on Sep 1, 2022
  6. ghost removed
    untriagedNew issue has not been triaged by the area owner
    on Sep 1, 2022
  7. StephenMolloy commented on Sep 2, 2022

    @StephenMolloy
    Contributor

    Right. So this is a bit of a minor saga ongoing here. In 6.0 we switched XmlSerializer from using XmlTextReader/Writer which is a little free-and-loose with Xml rules to use the more compliant XmlReader/Writer.Create() factories. This gets more correctness in XmlSerializer... but XmlTextWriter was faster. There were perf regressions with this change. (See #56014 and #56352)

    Before 6.0 shipped, we got this performance gap mostly closed by removing indentation from the applied settings for our new XmlWriter. See #56524.

    However, we have received a lot of blowback for not having human-readable Xml output. (See #63585 and #64885) So in 7.0, we have decided to re-introduce indenting. (See #73731) This regression is expected and is something we will live with. We do hope to re-vamp XmlSerializer in 8.0 to work with different internal mechanisms and be much faster.

    But for 7.0 (and 6.0 if we decide to backport this fix) customers who need every last bit of performance can supply their own XmlWriter when serializing.

  8. ghost locked as resolved and limited conversation to collaborators on Oct 2, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions