惰性二进制序列化

时间:2024-07-18 13:21:33
【文件属性】:

文件名称:惰性二进制序列化

文件大小:17KB

文件格式:ZIP

更新时间:2024-07-18 13:21:33

lbs-rs

LBScrates.io |文档.rs库名称代表惰性二进制序列化。我们称之为“懒惰”,因为它不会序列化/反序列化使用默认值初始化的结构字段,如0 、0.0 、"" 、Option::None 、空容器等。当涉及到大型结构时,这种简单的技术使 LBS 比其他二进制序列化库快得多。LBS 来自一个高负载项目,该项目需要对大型结构(大约 160 个字段)进行非常廉价的反序列化,其中只有一些字段被明确填充,其他字段使用默认值进行初始化。为什么没有塞尔德?Serde是一个伟大而方便的框架,但是,作为用户代码和序列化库代码之间的附加层,它会导致大量的性能损失。此外,serde 1.0.125 仍然不允许使用数字值作为字段名称(或标识符),如果我们只想序列化某些字段而忽略其他字段,这是另一个性能损失。为什么不直接使用没有 serde 的其他库?事实上,有一些不需要 serde 的二进制序列化库。好的例子是speedy和borsh ,但不幸的是,它们不支持条件序列化 - 每个字段都必须序列化/反序列化。还有msgpack-rust (rmp) 支持作为映射的条件序列化,但对于我们的用例来说仍然不够快。


【文件预览】:
lbs-rs-main
----lbs_derive()
--------src()
--------Cargo.toml(483B)
----test()
--------src()
--------Cargo.toml(269B)
----LICENSE(1KB)
----Cargo.toml(51B)
----.gitignore(334B)
----README.md(13KB)
----lbs()
--------src()
--------Cargo.toml(626B)

网友评论