更小、更快的 Ruby 应用及其他领域的序列化!

这是关于 TinyBits 的介绍,TinyBits 是一个 C 库,实现了从特定数据类型到二进制格式的序列化和反序列化,支持多种数据类型,如整数、浮点数、字符串等。

  • 设计权衡:重复字符串的文档压缩效果好,平衡了大小缩减和编码性能,优先考虑解码性能和中小文档。
  • 使用方法:安装 gem 后,可使用类方法或对象接口进行序列化和反序列化,对象接口可在多次调用间不重置。
  • 紧凑性:与其他序列化格式相比,在处理包含重复数据的文档时能显著压缩大小,如在特定示例中比 JSON 压缩了约 50%,比 CBOR 和 MessagePack 也更紧凑。
  • 快速编码:平均编码速度比其他二进制编码器快,如比 MessagePack 快约 9%,尽管有字符串去重和整数/浮点数压缩的开销。
  • 快速解码:解码过程更快,比标准库 JSON 解析器快约 38%,得益于紧凑的编码和字符串去重。
  • 可压缩性:与 JSON 相比,在压缩方面具有竞争力,使用 LZ4 时总是更可压缩,使用 Zstd 时与 JSON 相差不大。
  • 内存使用:在测试的所有序列化器中,TinyBits 的 Ruby 扩展分配的内存最少。
  • 综合优势:在提供的数据集上,TinyBits 提供了最佳的编码/解码性能,同时在不牺牲可压缩性的情况下实现了最小的编码大小,比最紧凑的格式(MessagePack)减少了 35%以上的大小,比最快的现有无模式编码器(MessagePack)快约 9%,比最快的现有无模式解码器(stdlib JSON)快约 38%。
  • 额外功能:TinyBits Ruby gem 具有多对象打包功能,可将多个对象拼接进同一缓冲区,对象可在不同时间添加,共享去重字典,解包器可逐个解包对象。
  • 开发状态:TinyBits C 库和格式规范已接近完成,目前只有实验性的 Ruby 扩展可用,Python 扩展也在顺利进行,正在为其他语言和平台制作扩展。

总之,TinyBits 是一个高效的序列化库,在处理无模式数据时具有空间效率高和速度快的特点。

阅读 9
0 条评论