56014 xml writer.create perf regression #56524
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Using XmlWriter.Create() instead of XmlTextWriter introduced perf regression.
We have "correctness" reasons for switching to XmlWriter.Create() instead
of sticking with XmlTextWriter. (See #1411 and #46974 as examples.) For
folks who are adversely impacted by this change, they can always get the old
behavior by passing in their own XmlTextWriter when serializing.
In my own playing around with XmlWriter.Create() however, I found there
to be a rather significant penalty for using an "Indent" wrapper. I don't
know why the difference is so large, but I've seen indentation add 60-100%
more time to serialization of large/extensive objects. Removing the
indentation wrapper produces xml that is not very human-readable, but
it is still correct and round-trips serialization. (I don't know what affect
indentation will have on the super-short micro-benchmarks that identified this
regression. My dev machine was not producing consistent or obvious results
wrt which XmlWriter was being used.)
Fixes #56014 and #56352