#buffer #zero-copy #io #output-buffer #rope

chunked-bytes

一种类似于 rope 的非连续缓冲区,用于高效的数据结构序列化和矢量输出

7 个版本

0.3.0 2021年1月28日
0.2.0 2020年10月28日
0.1.0 2020年6月26日

1984数据结构

Download history 37/week @ 2024-03-10 19/week @ 2024-03-17 1/week @ 2024-03-24 13/week @ 2024-03-31 10/week @ 2024-04-07 1/week @ 2024-04-14 7/week @ 2024-04-21 13/week @ 2024-04-28

每月 175 次下载

MIT 许可证

36KB
568

Chunked Bytes

此软件包提供两种 ChunkedBytes 变体,用于高效的数据结构序列化和矢量输出。

在网络编程中,通常需要将数据结构序列化为线协议表示形式,并将生成的字节序列发送到输出对象,例如套接字。出于各种原因,协议实现者更愿意将数据序列化到内存中的中间缓冲区,而不是直接以同步或异步形式处理输出对象,或者两者都处理。当使用连续的缓冲区,如 Vec,来执行此操作时,为了适应序列化数据的较大长度而进行的重新分配可能会对性能产生不利影响,而在该上下文中预先评估所需长度可能很麻烦或困难。单个连续缓冲区还形成写入请求的边界,需要复制回方案来避免尾部数据碎片化写入的低效。

另一个重要用例是传递网络数据。如果一些数据被接收到了 Bytes 处理程序中,应该能够在不进行额外复制的情况下将数据注入输出流。

这就是 ChunkedBytes 的用武之地,这些容器可以用于将通过 BufMut 接口添加的字节数据以及可能的 Bytes 输入合并成一个适合实现 Write::write_vectored 方法的块序列。这种设计旨在无论缓冲数据的尺寸如何都能提供良好的性能,并且无需预先分配足够的容量。

许可证

本项目采用 MIT 许可证

贡献

除非您明确声明,否则您提交的任何有意包含在 chunked-bytes 中的贡献均应按照 MIT 许可,不附加任何额外条款或条件。

依赖项

~170KB