Репост из: Rust 视界
Rust 序列化: 生产环境该选择哪种格式
该文作者比较了 JSON/ YAML/ RON / bincode / MessagePack / jsonway / CBOR/ Postcard / FlexBuffers/ FlatBuffers/ abomonation 这些文本/二进制协议的序列化反序列化性能。
结论:
1. 如果需要快速的序列化和反序列化,最好使用bincode
2. 如果需要最小的序列化大小,MessagePack是最好的格式,尽管反序列化需要更多的运行时间
3. Postcard 在大小和速度之间提供了很好的折衷方案,可用于嵌入式用途
4. FlatBuffer 很复杂,绝对不Rust,而且占用的空间比其应有的多。 除非您以多种语言使用架构定义,否则实际上没有理由使用它。 即使这样,JSON也更快
5. JSON是三种文本格式中最快的,这是有道理的,因为它在业界得到了广泛的使用,并受益于SIMD优化
关于成熟度,仅二进制代码和JSON标记有1. *主版本号。 尽管如此,Rust世界中有一种约定俗成:就是在达到1.0时要非常谨慎,甚至可能过于谨慎。因此,这并不能说明板条箱的实际成熟度。
原文: https://blog.logrocket.com/rust-serialization-whats-ready-for-production-today/
基准测试代码:https://github.com/llogiq/serdebench
该文作者比较了 JSON/ YAML/ RON / bincode / MessagePack / jsonway / CBOR/ Postcard / FlexBuffers/ FlatBuffers/ abomonation 这些文本/二进制协议的序列化反序列化性能。
结论:
1. 如果需要快速的序列化和反序列化,最好使用bincode
2. 如果需要最小的序列化大小,MessagePack是最好的格式,尽管反序列化需要更多的运行时间
3. Postcard 在大小和速度之间提供了很好的折衷方案,可用于嵌入式用途
4. FlatBuffer 很复杂,绝对不Rust,而且占用的空间比其应有的多。 除非您以多种语言使用架构定义,否则实际上没有理由使用它。 即使这样,JSON也更快
5. JSON是三种文本格式中最快的,这是有道理的,因为它在业界得到了广泛的使用,并受益于SIMD优化
关于成熟度,仅二进制代码和JSON标记有1. *主版本号。 尽管如此,Rust世界中有一种约定俗成:就是在达到1.0时要非常谨慎,甚至可能过于谨慎。因此,这并不能说明板条箱的实际成熟度。
原文: https://blog.logrocket.com/rust-serialization-whats-ready-for-production-today/
基准测试代码:https://github.com/llogiq/serdebench