Skip to content

Benchmark Notes

这个页面的目的,是让性能表述更准确。

引用 benchmark 之前先看这里

ASUN 没有一个适用于所有语言的统一性能倍数。

引用 benchmark 时,建议明确说明:

  • 是哪一种语言实现,不要只写 “ASUN”
  • 是文本还是二进制
  • 是平面数组、深层嵌套,还是极小单对象
  • 是吞吐、延迟、round-trip、只编码还是只解码

哪些结论更容易跨语言成立

  • 重复行数据上的 token 节省
  • 文本载荷通常比重复 key 的 JSON 更小
  • 对重复 schema 数据更友好的解析模型
  • 同一运行时内,二进制通常比文本更快

哪些结论不能自动迁移

  • Rust 的数字不能自动套到 Go、Java、Python 或其它实现
  • 原生实现的结果不能直接代表动态运行时
  • 二进制 benchmark 不能直接证明文本模式的性能
  • 大数组 benchmark 不能直接代表极小单对象

当前生态里的说明

语言族说明
Rust当前仓库里 benchmark 最成熟,适合看详细快照
Go很适合重复结构体和服务型负载
Java对托管运行时下的结构化数据也很有竞争力
Python更大的优势来自结构更紧凑和 schema 复用,而不是 VM 极限吞吐
C / C++ / Zig很适合高吞吐原生场景

推荐写法

推荐:

  • “Rust 在重复行解码上有明显优势。”
  • “二进制模式通常是同一运行时内最快的路径。”
  • “性能会随语言与载荷形态变化。”

避免:

  • “ASUN 一定比 JSON 快 7 倍。”
  • “所有语言实现都有同样的解析提升。”
  • “二进制 benchmark 可以直接证明文本模式性能。”

继续阅读

基于 MIT 许可证发布。