Replace Marshal.SizeOf(...) calls for primitive types with sizeof(...) #9220
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
Replaces
Marshal.SizeOf
calls for primitive types withsizeof
operator, saving some unnecessary overhead as the codegen results in a constant number generated in compile time.I've also replaced the calls for
Marshal.SizeOf(typeof(Guid))
withUnsafe.SizeOf<Guid>()
as the source counts on 16 bytes in all instances I could find anyways.Finally, I've replaced some instances of weird ways to retrieve IntPtr size, using its property instead, which also results in a constant in runtime.
Customer Impact
Improved performance, less overhead.
Native
class static constructor goes from 120ns to 0.02ns for example.Regression
No.
Testing
Verifying basic library functionality. Changes are minimal.
Risk
No.
Microsoft Reviewers: Open in CodeFlow