README.MD

September 28, 2025 · View on GitHub

RecyclableBuffer

基于 ArrayPool<byte> 实现的单内存片段和多内存片段可复用的缓冲区 。

Nuget

RecyclableBuffer

Benchmark

在单次复用、并行复用和异步并行复用三种场景中 RecyclableBuffer 的 Benchmark 成绩 都略微优于 RecyclableMemoryStream

使用 SingleSegmentBufferWriter

IBufferWriter<byte> 接口

using var bufferWriter = new SingleSegmentBufferWriter(1024);

// 使用IBufferWriter<byte>接口写入一些数据
var span = bufferWriter.GetSpan(sizeof(int));
BinaryPrimitives.WriteInt32BigEndian(span, 42);
bufferWriter.Advance(sizeof(int));

// 获取已写入的数据跨度
var sequence = bufferWriter.WrittenSpan;

Stream 接口

using var bufferWriter = new SingleSegmentBufferWriter(1024);

// 使用Stream接口写入
var writableStream = bufferWriter.AsWritableStream();
await JsonSerializer.SerializeAsync(writableStream, users);

// 获取已写入的数据跨度
var sequence = bufferWriter.WrittenSpan;

使用 MultipleSegmentBufferWriter

IBufferWriter<byte> 接口

using var bufferWriter = new MultipleSegmentBufferWriter();

// 使用IBufferWriter<byte>接口写入一些数据
var span = bufferWriter.GetSpan(sizeof(int));
BinaryPrimitives.WriteInt32BigEndian(span, 42);
bufferWriter.Advance(sizeof(int));

// 获取已写入的数据序列
var sequence = bufferWriter.WrittenSequence;

Stream 接口

using var bufferWriter = new MultipleSegmentBufferWriter();

// 使用Stream接口写入
var writableStream = bufferWriter.AsWritableStream();
await JsonSerializer.SerializeAsync(writableStream, users);

// 获取已写入的数据序列
var sequence = bufferWriter.WrittenSequence;