Skip to content

[Perf] Regression in Xml_ToStream Serializers #56016

Closed

Description

@DrewScoggins

Run Information

Architecture x64
OS Windows 10.0.18362
Baseline 71d0d2b275efa091f235c569f01869f39bfb7638
Compare e983168f871dcba090ff6ec08c0d2c7d4353fb8e
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 392.35 μs 491.84 μs 1.25 0.46 False

graph
Historical Data in Reporting System

Repro

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

Payloads

Baseline
Compare

Histogram

MicroBenchmarks.Serializers.Xml_ToStream<MyEventsListerViewModel>.XmlSerializer_


Docs

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

### Run Information
Architecture x64
OS Windows 10.0.18362
Baseline 71d0d2b275efa091f235c569f01869f39bfb7638
Compare e983168f871dcba090ff6ec08c0d2c7d4353fb8e
Diff Diff

Regressions in MicroBenchmarks.Serializers.Xml_ToStream<IndexViewModel>

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
XmlSerializer_ - Duration of single invocation 40.90 μs 49.20 μs 1.20 0.13 False

graph
Historical Data in Reporting System

Repro

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

Payloads

Baseline
Compare

Histogram

MicroBenchmarks.Serializers.Xml_ToStream<IndexViewModel>.XmlSerializer_


Docs

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

Activity

  1. ghost added
    untriagedNew issue has not been triaged by the area owner
    on Jul 20, 2021
  2. DrewScoggins commented on Jul 20, 2021

    @DrewScoggins
    MemberAuthor

    Seems related to #55101

  3. DrewScoggins commented on Jul 20, 2021

    @DrewScoggins
    MemberAuthor

    Improvement:

    Run Information

    Architecture x64
    OS Windows 10.0.18362
    Baseline 71d0d2b275efa091f235c569f01869f39bfb7638
    Compare e983168f871dcba090ff6ec08c0d2c7d4353fb8e
    Diff Diff

    Improvemnts in MicroBenchmarks.Serializers.Xml_FromStream<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 1.17 ms 895.25 μs 0.77 0.01 True

    graph
    Historical Data in Reporting System

    Repro

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

    Payloads

    Baseline
    Compare

    Histogram

    MicroBenchmarks.Serializers.Xml_FromStream<MyEventsListerViewModel>.XmlSerializer_

    
    

    Docs

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

    ### Run Information
    Architecture x64
    OS Windows 10.0.18362
    Baseline 71d0d2b275efa091f235c569f01869f39bfb7638
    Compare e983168f871dcba090ff6ec08c0d2c7d4353fb8e
    Diff Diff

    Improvemnts in MicroBenchmarks.Serializers.Xml_FromStream<IndexViewModel>

    Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
    XmlSerializer_ - Duration of single invocation 102.70 μs 88.16 μs 0.86 0.01 False

    graph
    Historical Data in Reporting System

    Repro

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

    Payloads

    Baseline
    Compare

    Histogram

    MicroBenchmarks.Serializers.Xml_FromStream<IndexViewModel>.XmlSerializer_

    
    

    Docs

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

  4. mconnew commented on Jul 20, 2021

    @mconnew
    Member

    @DrewScoggins, #55101 wouldn't have caused a regression unless the types being serialized contain DateTimeOffset properties. If that's the case, then the regression is okay as we're doing more work as we're now actually serializing DateTimeOffset now. If there's no DateTimeOffset properties involved, then the problem was somewhere else.

  5. DrewScoggins commented on Jul 20, 2021

    @DrewScoggins
    MemberAuthor

    OK, those types do have DateTimeOffset. Before #55101 we were not doing the serialization at all, and now we are? If that is the case then seems like a regression would be expected.

  6. mconnew commented on Jul 20, 2021

    @mconnew
    Member

    Yes, that is exactly the case. Previously it would serialize as an empty XML element. Now it will output an XML format date time, and will deserialize it too.

  7. stephentoub commented on Jul 21, 2021

    @stephentoub
    Member

    Closing as expected / by-design. Thanks.

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

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions