性能基准
本页的基准测试从两个关键维度衡量 TOON 的表现:
- 检索准确率:LLM 理解并从不同输入格式中提取信息的能力如何。
- Token 效率:每种格式表示相同数据所需的 token 数量。
为了保证公平比较,基准测试被划分为两个赛道:
- 混合结构赛道:具有嵌套或半一致结构的数据集(TOON 对比 JSON、YAML、XML)。CSV 被排除在外,因为它无法正确表示这些结构。
- 纯扁平结构赛道:具有扁平表格结构、适合 CSV 使用的数据集(CSV 对比 TOON、JSON、YAML、XML)。
检索准确率
基准测试使用 4 个模型上的 209 个数据检索问题,测试 LLM 在不同输入格式下的理解能力。
查看数据集目录
数据集目录
| 数据集 | 行数 | 结构 | CSV 支持 | 适用率 |
|---|---|---|---|---|
| 一致的员工记录 | 100 | 一致 | ✓ | 100% |
| 带嵌套结构的电商订单 | 50 | 嵌套 | ✗ | 33% |
| 时间序列分析数据 | 60 | 一致 | ✓ | 100% |
| GitHub 前 100 仓库 | 100 | 一致 | ✓ | 100% |
| 半一致的事件日志 | 75 | 半一致 | ✗ | 50% |
| 深度嵌套配置 | 11 | 深度嵌套 | ✗ | 0% |
| 有效的完整数据集(对照组) | 20 | 一致 | ✓ | 100% |
| 数组被截断:末尾移除 3 行 | 17 | 一致 | ✓ | 100% |
| 超出声明长度的多余行 | 23 | 一致 | ✓ | 100% |
| 字段数量不一致(第 10 行缺少 salary) | 20 | 一致 | ✓ | 100% |
| 缺少必需字段(多行缺少 email) | 20 | 一致 | ✓ | 100% |
结构类别:
- 一致(uniform):所有对象具有完全相同的字段,且都是基本类型值
- 半一致(semi-uniform):一致结构与非一致结构的混合
- 嵌套(nested):带有嵌套结构(嵌套对象或数组)的对象
- 深度嵌套(deep):高度嵌套,表格化适用率极低
CSV 支持: ✓(支持),✗(不支持——需要有损的扁平化处理)
适用率: 符合 TOON 表格化格式条件(基本类型值的一致对象)的数组所占百分比
效率排名(每 1K Token 的准确率)
按效率(每 1,000 个 token 对应的准确率百分比)对各格式进行排名:
TOON ████████████████████ 27.7 acc%/1K tok │ 76.4% acc │ 2,759 tokens
JSON compact █████████████████░░░ 23.7 acc%/1K tok │ 73.7% acc │ 3,104 tokens
YAML ██████████████░░░░░░ 19.9 acc%/1K tok │ 74.5% acc │ 3,749 tokens
JSON ████████████░░░░░░░░ 16.4 acc%/1K tok │ 75.0% acc │ 4,587 tokens
XML ██████████░░░░░░░░░░ 13.8 acc%/1K tok │ 72.1% acc │ 5,221 tokens效率分数 = (准确率 % ÷ Token 数) × 1,000。数值越高越好。
TIP
TOON 达到了 76.4% 的准确率(JSON 为 75.0%),同时所用 token 减少了 39.9%。
关于 CSV 的说明: 由于它仅支持 209 个问题中的 109 个(仅限扁平表格数据),因此未列入排名。虽然 CSV 对于简单表格数据而言 token 效率极高,但它无法表示其他格式所能处理的嵌套结构。
各模型准确率
4 个 LLM 在 209 个数据检索问题上的准确率:
claude-haiku-4-5-20251001
→ TOON ████████████░░░░░░░░ 59.8% (125/209)
JSON ███████████░░░░░░░░░ 57.4% (120/209)
YAML ███████████░░░░░░░░░ 56.0% (117/209)
XML ███████████░░░░░░░░░ 55.5% (116/209)
JSON compact ███████████░░░░░░░░░ 55.0% (115/209)
CSV ██████████░░░░░░░░░░ 50.5% (55/109)
gemini-3-flash-preview
XML ████████████████████ 98.1% (205/209)
JSON ███████████████████░ 97.1% (203/209)
YAML ███████████████████░ 97.1% (203/209)
→ TOON ███████████████████░ 96.7% (202/209)
JSON compact ███████████████████░ 96.7% (202/209)
CSV ███████████████████░ 96.3% (105/109)
gpt-5-nano
→ TOON ██████████████████░░ 90.9% (190/209)
JSON compact ██████████████████░░ 90.9% (190/209)
JSON ██████████████████░░ 89.0% (186/209)
CSV ██████████████████░░ 89.0% (97/109)
YAML █████████████████░░░ 87.1% (182/209)
XML ████████████████░░░░ 80.9% (169/209)
grok-4-1-fast-non-reasoning
→ TOON ████████████░░░░░░░░ 58.4% (122/209)
YAML ████████████░░░░░░░░ 57.9% (121/209)
JSON ███████████░░░░░░░░░ 56.5% (118/209)
XML ███████████░░░░░░░░░ 54.1% (113/209)
JSON compact ██████████░░░░░░░░░░ 52.2% (109/209)
CSV ██████████░░░░░░░░░░ 51.4% (56/109)TIP
在这些数据集上,TOON 达到了 76.4% 的准确率(JSON 为 75.0%),同时所用 token 减少了 39.9%。
按数据集、模型和问题类型划分的表现
按问题类型划分的表现
| 问题类型 | TOON | JSON | YAML | JSON compact | XML | CSV |
|---|---|---|---|---|---|---|
| 字段检索 | 99.6% | 99.3% | 98.5% | 98.5% | 98.9% | 100.0% |
| 聚合运算 | 61.9% | 61.9% | 59.9% | 58.3% | 54.4% | 50.9% |
| 筛选过滤 | 56.8% | 53.1% | 56.3% | 55.2% | 51.6% | 50.9% |
| 结构感知 | 89.0% | 87.0% | 84.0% | 84.0% | 81.0% | 85.9% |
| 结构校验 | 70.0% | 60.0% | 60.0% | 55.0% | 85.0% | 80.0% |
按数据集划分的表现
一致的员工记录
| 格式 | 准确率 | Token 数 | 正确数/总数 |
|---|---|---|---|
csv | 73.2% | 2,334 | 120/164 |
toon | 73.2% | 2,498 | 120/164 |
json-compact | 73.8% | 3,924 | 121/164 |
yaml | 73.8% | 4,959 | 121/164 |
json-pretty | 73.8% | 6,331 | 121/164 |
xml | 74.4% | 7,296 | 122/164 |
带嵌套结构的电商订单
| 格式 | 准确率 | Token 数 | 正确数/总数 |
|---|---|---|---|
toon | 82.3% | 7,458 | 135/164 |
json-compact | 78.7% | 7,110 | 129/164 |
yaml | 79.9% | 8,755 | 131/164 |
json-pretty | 79.3% | 11,234 | 130/164 |
xml | 77.4% | 12,649 | 127/164 |
时间序列分析数据
| 格式 | 准确率 | Token 数 | 正确数/总数 |
|---|---|---|---|
csv | 75.0% | 1,411 | 90/120 |
toon | 78.3% | 1,553 | 94/120 |
json-compact | 74.2% | 2,354 | 89/120 |
yaml | 75.8% | 2,954 | 91/120 |
json-pretty | 75.0% | 3,681 | 90/120 |
xml | 72.5% | 4,389 | 87/120 |
GitHub 前 100 仓库
| 格式 | 准确率 | Token 数 | 正确数/总数 |
|---|---|---|---|
csv | 65.9% | 8,527 | 87/132 |
toon | 66.7% | 8,779 | 88/132 |
yaml | 65.2% | 13,141 | 86/132 |
json-compact | 59.8% | 11,464 | 79/132 |
json-pretty | 63.6% | 15,157 | 84/132 |
xml | 56.1% | 17,105 | 74/132 |
半一致的事件日志
| 格式 | 准确率 | Token 数 | 正确数/总数 |
|---|---|---|---|
json-compact | 68.3% | 4,839 | 82/120 |
toon | 65.0% | 5,819 | 78/120 |
json-pretty | 69.2% | 6,817 | 83/120 |
yaml | 61.7% | 5,847 | 74/120 |
xml | 58.3% | 7,729 | 70/120 |
深度嵌套配置
| 格式 | 准确率 | Token 数 | 正确数/总数 |
|---|---|---|---|
json-compact | 90.5% | 568 | 105/116 |
toon | 94.8% | 655 | 110/116 |
yaml | 93.1% | 675 | 108/116 |
json-pretty | 92.2% | 924 | 107/116 |
xml | 91.4% | 1,013 | 106/116 |
有效的完整数据集(对照组)
| 格式 | 准确率 | Token 数 | 正确数/总数 |
|---|---|---|---|
toon | 100.0% | 535 | 4/4 |
json-compact | 100.0% | 787 | 4/4 |
yaml | 100.0% | 992 | 4/4 |
json-pretty | 100.0% | 1,274 | 4/4 |
xml | 25.0% | 1,462 | 1/4 |
csv | 0.0% | 483 | 0/4 |
数组被截断:末尾移除 3 行
| 格式 | 准确率 | Token 数 | 正确数/总数 |
|---|---|---|---|
csv | 100.0% | 413 | 4/4 |
xml | 100.0% | 1,243 | 4/4 |
toon | 0.0% | 462 | 0/4 |
json-pretty | 0.0% | 1,085 | 0/4 |
yaml | 0.0% | 843 | 0/4 |
json-compact | 0.0% | 670 | 0/4 |
超出声明长度的多余行
| 格式 | 准确率 | Token 数 | 正确数/总数 |
|---|---|---|---|
csv | 100.0% | 550 | 4/4 |
toon | 75.0% | 605 | 3/4 |
json-compact | 75.0% | 901 | 3/4 |
xml | 100.0% | 1,678 | 4/4 |
yaml | 75.0% | 1,138 | 3/4 |
json-pretty | 50.0% | 1,460 | 2/4 |
字段数量不一致(第 10 行缺少 salary)
| 格式 | 准确率 | Token 数 | 正确数/总数 |
|---|---|---|---|
csv | 100.0% | 480 | 4/4 |
json-compact | 100.0% | 782 | 4/4 |
yaml | 100.0% | 985 | 4/4 |
toon | 100.0% | 1,008 | 4/4 |
json-pretty | 100.0% | 1,266 | 4/4 |
xml | 100.0% | 1,453 | 4/4 |
缺少必需字段(多行缺少 email)
| 格式 | 准确率 | Token 数 | 正确数/总数 |
|---|---|---|---|
csv | 100.0% | 340 | 4/4 |
xml | 100.0% | 1,409 | 4/4 |
toon | 75.0% | 974 | 3/4 |
json-pretty | 50.0% | 1,225 | 2/4 |
yaml | 25.0% | 951 | 1/4 |
json-compact | 0.0% | 750 | 0/4 |
按模型划分的表现
claude-haiku-4-5-20251001
| 格式 | 准确率 | 正确数/总数 |
|---|---|---|
toon | 59.8% | 125/209 |
json-pretty | 57.4% | 120/209 |
yaml | 56.0% | 117/209 |
xml | 55.5% | 116/209 |
json-compact | 55.0% | 115/209 |
csv | 50.5% | 55/109 |
gemini-3-flash-preview
| 格式 | 准确率 | 正确数/总数 |
|---|---|---|
xml | 98.1% | 205/209 |
json-pretty | 97.1% | 203/209 |
yaml | 97.1% | 203/209 |
toon | 96.7% | 202/209 |
json-compact | 96.7% | 202/209 |
csv | 96.3% | 105/109 |
gpt-5-nano
| 格式 | 准确率 | 正确数/总数 |
|---|---|---|
toon | 90.9% | 190/209 |
json-compact | 90.9% | 190/209 |
json-pretty | 89.0% | 186/209 |
csv | 89.0% | 97/109 |
yaml | 87.1% | 182/209 |
xml | 80.9% | 169/209 |
grok-4-1-fast-non-reasoning
| 格式 | 准确率 | 正确数/总数 |
|---|---|---|
toon | 58.4% | 122/209 |
yaml | 57.9% | 121/209 |
json-pretty | 56.5% | 118/209 |
xml | 54.1% | 113/209 |
json-compact | 52.2% | 109/209 |
csv | 51.4% | 56/109 |
测试内容说明
本基准测试测的是 LLM 对不同输入格式的理解能力和数据检索准确率。每个 LLM 都会接收格式化的数据,并需要就其回答问题。这不是在测试模型生成 TOON 输出的能力——只测试其读取和理解 TOON 的能力。
测试的数据集
十一个数据集分别用于测试不同的结构模式和校验能力:
主要数据集:
- 表格型(100 条员工记录):字段完全一致的对象——最适合 TOON 的表格化格式。
- 嵌套型(50 个电商订单):包含嵌套客户对象和商品数组的复杂结构。
- 分析型(60 天的指标数据):带有日期和数值的时间序列数据。
- GitHub(100 个仓库):按星标数排名的 GitHub 热门仓库真实数据。
- 事件日志(75 条日志):半一致数据,约 50% 为扁平日志,约 50% 带有嵌套的错误对象。
- 嵌套配置(1 份配置):深度嵌套配置,表格化适用率极低。
结构校验数据集:
- 对照组:有效的完整数据集(用作校验的基线)
- 截断:末尾移除 3 行的数组(测试
[N]长度检测能力) - 多余行:超出声明长度、多出 3 行的数组
- 宽度不匹配:字段数量不一致(第 10 行缺少 salary)
- 缺失字段:系统性的字段缺失(多行缺少 email)
问题类型
209 个问题分为五大类动态生成:
字段检索(33%):可直接查得的值,或可以直接从记录中读取的值(包括布尔值和简单计数,如数组长度)
- 示例:"Alice 的薪资是多少?" →
75000 - 示例:"订单 ORD-0042 中有多少件商品?" →
3 - 示例:"订单 ORD-0042 的客户姓名是什么?" →
John Doe
- 示例:"Alice 的薪资是多少?" →
聚合运算(30%):数据集层面的总计和平均值,以及单条件筛选(计数、求和、最小/最大值比较)
- 示例:"有多少员工在 Engineering 部门工作?" →
17 - 示例:"所有订单的总收入是多少?" →
45123.50 - 示例:"有多少员工的薪资 > 80000?" →
23
- 示例:"有多少员工在 Engineering 部门工作?" →
筛选过滤(23%):需要复合逻辑的多条件查询(跨字段的 AND 约束)
- 示例:"Sales 部门中有多少员工的薪资 > 80000?" →
5 - 示例:"有多少在职员工的工作年限超过 10 年?" →
8
- 示例:"Sales 部门中有多少员工的薪资 > 80000?" →
结构感知(12%):测试格式原生的结构性能力(TOON 的
[N]计数和{fields},CSV 的表头行)- 示例:"数据集中有多少员工?" →
100 - 示例:"列出员工的字段名" →
id, name, email, department, salary, yearsExperience, active - 示例:"最后一名员工所在部门是什么?" →
Sales
- 示例:"数据集中有多少员工?" →
结构校验(2%):测试利用结构元数据检测不完整、被截断或损坏数据的能力
- 示例:"这份数据是否完整有效?" →
YES(对照数据集)或NO(损坏数据集) - 测试 TOON 的
[N]长度校验和{fields}一致性检查 - 展示 CSV 缺乏结构校验能力的情况
- 示例:"这份数据是否完整有效?" →
评测流程
- 格式转换:每个数据集都会被转换为全部 6 种格式(TOON、JSON、YAML、JSON compact、XML、CSV)。
- 查询 LLM:每个模型在提示词中接收格式化数据和问题,并提取答案。
- 确定性校验:使用类型感知的比较方式对答案进行校验(例如
50000=$50,000、Engineering=engineering、2025-01-01=January 1, 2025),无需借助 LLM 评判者。
模型与配置
- 测试模型:
claude-haiku-4-5-20251001、gemini-3-flash-preview、gpt-5-nano、grok-4-1-fast-non-reasoning - Token 计数:使用
gpt-tokenizer及o200k_base编码(GPT-5 分词器) - 温度参数:未设置(使用模型默认值)
- 评测总数:209 个问题 × 6 种格式 × 4 个模型 = 5,016 次 LLM 调用
Token 效率
Token 数量使用 GPT-5 的 o200k_base 分词器,通过 gpt-tokenizer 进行测量。节省比例以格式化 JSON(2 空格缩进)为主要基线进行计算,并与压缩 JSON(minified)、YAML 和 XML 进行了额外对比。实际节省效果因模型和分词器而异。
基准测试涵盖了不同结构模式(一致、半一致、嵌套、深度嵌套)的数据集,以展示 TOON 的优势场景以及其他格式可能更适用的场景。
混合结构赛道
具有嵌套或半一致结构的数据集。CSV 被排除在外,因为它无法正确表示这些结构。
🛒 带嵌套结构的电商订单 ┊ 表格化适用率:33%
│
TOON █████████████░░░░░░░ 73,126 tokens
├─ vs JSON (−33.3%) 109,599 tokens
├─ vs JSON compact (+5.3%) 69,459 tokens
├─ vs YAML (−14.4%) 85,415 tokens
└─ vs XML (−40.7%) 123,344 tokens
🧾 半一致的事件日志 ┊ 表格化适用率:50%
│
TOON █████████████████░░░ 154,084 tokens
├─ vs JSON (−15.0%) 181,201 tokens
├─ vs JSON compact (+19.9%) 128,529 tokens
├─ vs YAML (−0.8%) 155,397 tokens
└─ vs XML (−25.2%) 205,859 tokens
🧩 深度嵌套配置 ┊ 表格化适用率:0%
│
TOON ██████████████░░░░░░ 620 tokens
├─ vs JSON (−31.9%) 911 tokens
├─ vs JSON compact (+11.1%) 558 tokens
├─ vs YAML (−6.3%) 662 tokens
└─ vs XML (−38.2%) 1,003 tokens
──────────────────────────────────── 总计 ────────────────────────────────────
TOON ████████████████░░░░ 227,830 tokens
├─ vs JSON (−21.9%) 291,711 tokens
├─ vs JSON compact (+14.7%) 198,546 tokens
├─ vs YAML (−5.7%) 241,474 tokens
└─ vs XML (−31.0%) 330,206 tokens纯扁平结构赛道
具有扁平表格结构、适合使用 CSV 的数据集。
👥 一致的员工记录 ┊ 表格化适用率:100%
│
CSV ███████████████████░ 47,102 tokens
TOON ████████████████████ 49,919 tokens (+6.0% vs CSV)
├─ vs JSON (−60.7%) 127,063 tokens
├─ vs JSON compact (−36.9%) 79,059 tokens
├─ vs YAML (−50.1%) 100,011 tokens
└─ vs XML (−65.9%) 146,579 tokens
📈 时间序列分析数据 ┊ 表格化适用率:100%
│
CSV ██████████████████░░ 8,383 tokens
TOON ████████████████████ 9,115 tokens (+8.7% vs CSV)
├─ vs JSON (−59.0%) 22,245 tokens
├─ vs JSON compact (−35.9%) 14,211 tokens
├─ vs YAML (−49.0%) 17,858 tokens
└─ vs XML (−65.8%) 26,616 tokens
⭐ GitHub 前 100 仓库 ┊ 表格化适用率:100%
│
CSV ███████████████████░ 8,512 tokens
TOON ████████████████████ 8,744 tokens (+2.7% vs CSV)
├─ vs JSON (−42.3%) 15,144 tokens
├─ vs JSON compact (−23.7%) 11,454 tokens
├─ vs YAML (−33.4%) 13,128 tokens
└─ vs XML (−48.9%) 17,095 tokens
──────────────────────────────────── 总计 ────────────────────────────────────
CSV ███████████████████░ 63,997 tokens
TOON ████████████████████ 67,778 tokens (+5.9% vs CSV)
├─ vs JSON (−58.8%) 164,452 tokens
├─ vs JSON compact (−35.3%) 104,724 tokens
├─ vs YAML (−48.3%) 130,997 tokens
└─ vs XML (−64.4%) 190,290 tokens查看详细示例
📈 时间序列分析数据
节省: 13,130 个 token(相较 JSON 减少 59.0%)
JSON(22,245 个 token):
{
"metrics": [
{
"date": "2025-01-01",
"views": 6138,
"clicks": 174,
"conversions": 12,
"revenue": 2712.49,
"bounceRate": 0.35
},
{
"date": "2025-01-02",
"views": 4616,
"clicks": 274,
"conversions": 34,
"revenue": 9156.29,
"bounceRate": 0.56
},
{
"date": "2025-01-03",
"views": 4460,
"clicks": 143,
"conversions": 8,
"revenue": 1317.98,
"bounceRate": 0.59
},
{
"date": "2025-01-04",
"views": 4740,
"clicks": 125,
"conversions": 13,
"revenue": 2934.77,
"bounceRate": 0.37
},
{
"date": "2025-01-05",
"views": 6428,
"clicks": 369,
"conversions": 19,
"revenue": 1317.24,
"bounceRate": 0.3
}
]
}TOON(9,115 个 token):
metrics[5]{date,views,clicks,conversions,revenue,bounceRate}:
2025-01-01,6138,174,12,2712.49,0.35
2025-01-02,4616,274,34,9156.29,0.56
2025-01-03,4460,143,8,1317.98,0.59
2025-01-04,4740,125,13,2934.77,0.37
2025-01-05,6428,369,19,1317.24,0.3⭐ GitHub 前 100 仓库
节省: 6,400 个 token(相较 JSON 减少 42.3%)
JSON(15,144 个 token):
{
"repositories": [
{
"id": 28457823,
"name": "freeCodeCamp",
"repo": "freeCodeCamp/freeCodeCamp",
"description": "freeCodeCamp.org's open-source codebase and curriculum. Learn math, programming,…",
"createdAt": "2014-12-24T17:49:19Z",
"updatedAt": "2025-10-28T11:58:08Z",
"pushedAt": "2025-10-28T10:17:16Z",
"stars": 430886,
"watchers": 8583,
"forks": 42146,
"defaultBranch": "main"
},
{
"id": 132750724,
"name": "build-your-own-x",
"repo": "codecrafters-io/build-your-own-x",
"description": "Master programming by recreating your favorite technologies from scratch.",
"createdAt": "2018-05-09T12:03:18Z",
"updatedAt": "2025-10-28T12:37:11Z",
"pushedAt": "2025-10-10T18:45:01Z",
"stars": 430877,
"watchers": 6332,
"forks": 40453,
"defaultBranch": "master"
},
{
"id": 21737465,
"name": "awesome",
"repo": "sindresorhus/awesome",
"description": "😎 Awesome lists about all kinds of interesting topics",
"createdAt": "2014-07-11T13:42:37Z",
"updatedAt": "2025-10-28T12:40:21Z",
"pushedAt": "2025-10-27T17:57:31Z",
"stars": 410052,
"watchers": 8017,
"forks": 32029,
"defaultBranch": "main"
}
]
}TOON(8,744 个 token):
repositories[3]{id,name,repo,description,createdAt,updatedAt,pushedAt,stars,watchers,forks,defaultBranch}:
28457823,freeCodeCamp,freeCodeCamp/freeCodeCamp,"freeCodeCamp.org's open-source codebase and curriculum. Learn math, programming,…","2014-12-24T17:49:19Z","2025-10-28T11:58:08Z","2025-10-28T10:17:16Z",430886,8583,42146,main
132750724,build-your-own-x,codecrafters-io/build-your-own-x,Master programming by recreating your favorite technologies from scratch.,"2018-05-09T12:37:11Z","2025-10-28T12:37:11Z","2025-10-10T18:45:01Z",430877,6332,40453,master
21737465,awesome,sindresorhus/awesome,😎 Awesome lists about all kinds of interesting topics,"2014-07-11T13:42:37Z","2025-10-28T12:40:21Z","2025-10-27T17:57:31Z",410052,8017,32029,main