Skip to content
This repository was archived by the owner on Jan 30, 2026. It is now read-only.

Improve performance of DataReader and DataWriter #186

@pleonex

Description

@pleonex

Is your feature request related to a problem?
The performance of the binary reader and writer classes is worse than the .NET alternative BinaryReader / BinaryWriter. The reason is that it doesn't benefit from hardware acceleration features and it creates several buffers (requiring allocation).

Describe the solution you'd like
Create a performance test to compare the performance and improve by:

  • Having a re-usable byte array buffer
  • Using stackalloc and Span when possible
  • Use the class BinaryPrimitives to do the little and big endianness conversion. This class from the .NET library features hardware acceleration features.

Describe alternatives you've considered
Remove the class, but we need it as BinaryReader only supports little-endian decoding.

Additional context
These classes impact the performance of most user code.
The BinaryReader class has additional performance optimizations detecting if the Stream is MemoryStream and then accessing directly to the byte array with Spans. For now we should skip this kind of optimizations. We can consider them in the future inside DataStream.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    Status

    Todo

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions