RecyclableBuffer
基于 ArrayPool<byte> 实现的单内存片段和多内存片段可复用的缓冲区
Install / Use
/learn @xljiulang/RecyclableBufferREADME
RecyclableBuffer
基于 ArrayPool<byte> 实现的单内存片段和多内存片段可复用的缓冲区 。
Nuget
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;
