跳转至

TOON 性能测试

zerodep TOON 与 toon_format 的性能对比。

测试环境

  • CPU: x86_64 Linux
  • Python: 3.12
  • 工具: pytest-benchmark 5.2.3(报告均值)
  • 对标库: toon_format 0.9.0b1
  • 最后更新: 2026-04-15

实现对比

实现 文件/包 说明
zerodep toon.py 单文件编码器/解码器,仅标准库
toon_format (参考库) 18 个源文件,依赖 typing-extensions

测试数据

规模 描述
Small 简单的 3 字段对象({id, name, active}
Medium 包含 20 行表格数组 + 嵌套配置的对象
Large 5 个部门 × 4 个团队 × 5 名成员(深度嵌套,约 100 个对象)

编码性能(均值)

数据规模 zerodep toon_format 倍数
Small 7.0 μs 9.9 μs 快 1.4x
Medium 168.8 μs 205.7 μs 快 1.2x
Large 995.4 μs 1,238.4 μs 快 1.2x

解码性能(均值)

数据规模 zerodep toon_format 倍数
Small 16.3 μs 18.9 μs 快 1.2x
Medium 259.1 μs 277.3 μs 快 1.1x
Large 1,770.2 μs 1,873.0 μs 快 1.1x

Token 效率(TOON vs JSON)

数据规模 JSON(字符) TOON(字符) 节省
Small 52 32 38.5%
Medium 2,171 638 70.6%
Large 16,829 4,882 71.0%

要点总结

  • 编码快 1.2-1.4 倍 —— 将 18 个源文件合并为单文件,减少了导入和调度开销。
  • 解码快 1.1-1.2 倍 —— 单文件布局消除了跨模块函数调用开销。
  • 比 JSON 减少 38-71% 字符 —— TOON 的表格数组格式和裸键语法在结构化数据上实现显著压缩。表格数据越多节省越大。
  • 无需任何 pip 依赖 —— zerodep 仅使用标准库 remathdataclassescollections.abc

自行运行

pip install pytest pytest-benchmark
pip install git+https://github.com/toon-format/toon-python.git
pytest toon/test_toon_benchmark.py --benchmark-only -v

最新 CI 结果

每次发版时通过 Benchmark CI 自动更新。