Fixed Nullable value-type fields in Views in C# module causing excessive logging #3949
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.
Description of Changes
This PR fixes a C# codegen performance/behavior issue triggered by views that include nullable value-type fields (e.g.
DbVector2?), as reported in #3914.Nullable<T>members by usingSystem.Nullable.Equals(a, b)rather thana.Equals(b)(which can box and cause excessive host logging/work in view diff/equality paths).This causes code generation to change from something like:
DbVector2? Pos).some→none→someto force view re-evaluation and diffing.API and ABI breaking changes
None.
Expected complexity level and risk
2 - Low
System.Nullable<T>equality generation).System.Nullable.Equalsmatches the expected semantics and avoids boxing.Testing
run-regression-tests.shand confirmed no errors.