# v0.5 外部任务基准

在同一台 Windows 机器上用 v0.4.0 公开发布包和本轮 v0.5.0 编译产物读取同一套输入，按训练出来的排名固定第一候选。训练一致指所有训练样例满足约束。留出全对要求同一题的全部新行、单元格和行序都正确。候选中任一个正确是用答案事后计算的上界，产品选用第一候选时无法获得这个上界。

| 任务集和指标 | v0.4.0 | v0.5.0 |
| --- | ---: | ---: |
| Foofah 训练一致 / 全部文件 | 200/250 | 214/250 |
| Foofah 第一候选留出整表全对 | 150/225（66.7%） | 158/225（70.2%） |
| Foofah 至少一个候选正确 | 164/225 | 174/225 |
| Foofah 搜索 P50 / P95 | 157.8 / 253.2 ms | 143.1 / 239.5 ms |
| SyGuS 字符串训练一致 / 可评估文件 | 78/104 | 86/104 |
| SyGuS 第一候选留出全对 | 78/104（75.0%） | 82/104（78.8%） |
| SyGuS 至少一个候选正确 | 78/104 | 82/104 |
| SyGuS 相同训练/留出拆分只计一次，第一候选全对 | 40/51 | 42/51 |
| SyGuS 搜索 P50 / P95 | 45.7 / 80.4 ms | 48.0 / 95.2 ms |

## 表格任务

Foofah 固定版本的全部 250 个 exp0 文件覆盖 50 个任务族。学习器仅接收 `InputTable` 与 `OutputTable`，推理结束后在 `TestingTable` 上执行并比对 `TestAnswer`。25 个上游文件把测试答案写成占位值，保留在库存与训练统计中。5 个超过训练限制的文件均属缺答案集。其余 225 个文件都保留在泛化分母，即使找不到候选也计入。[上游与许可](../fixtures/foofah/README.md) · [逐题记录](evidence/benchmark-v0.5.0.json)

两个版本各跑三轮，交替先后顺序。每轮每道题的训练和留出判定相同。新版新增 8 道首候选通过，原先通过的题回退 0 道，另有 67 道有答案任务首候选失败。两个版本都在 245/250 题报告搜索截断。截断和已找到解可以同时发生。外部题集参与过项目迭代，50 个任务族的变体也有关联。[六轮摘要和增减清单](evidence/comparison-v0.4.0-v0.5.0.json) · [历史 v0.3 至 v0.4 评估](https://github.com/zhangbowen2006/ExampleLoom/blob/v0.4.0/docs/BENCHMARKS.md)

## 字符串任务

新增的输入来自 SyGuS 2017 PBE Strings 赛道在固定上游提交中的全部 108 个文件。先按每份文件去重输入。4 份文件对相同输入给出矛盾输出，分别记名排除，其余 104 份全部进入评估。按输入元组的 SHA-256 排序，取前 `min(6, n−1, ceil(2n/3))` 个输入用于训练，剩余输入全用于测试。测试数据和探测行均不传给学习器。这里评估输入输出转换能力，评分未施加 SyGuS 原题的语法约束。[上游题库](https://github.com/SyGuS-Org/benchmarks/tree/13c8deb68a873635879c9a69bc78caebd340f646/comp/2017/PBE_Strings_Track) · [完整拆分、哈希和排除原因](evidence/sygus-v0.5.0.json)

四个新增成功文件都属于 phone-9 题族，不能据此推断四类新能力。104 个文件合并完全相同的训练及留出样例后为 51 个拆分。新版在 22 个可评估文件上未达到首候选全对，其中 4 个已有训练一致候选。没有文件出现运行错误或超时，100/104 报告截断。上游根目录没有统一许可文件，仓库提供校验过的下载脚本和运行记录，原始题目保存在本地缓存。

## 搜索代价与复现

Foofah 的外层上限固定为 4 步、128 个状态、2000 次结构尝试和 8 个候选。新版行映射为需要尝试条件的子问题设置单独的分支预算。SyGuS 使用上限 8 候选、6 段、4000 次原子求值、30000 步和 1024 个前沿状态。每个文件每版运行一次，每道题轮换两版执行顺序。两套测试均使用独立 Worker 和 5 秒墙钟超时。表格延迟取每版三轮分位数的中位数，字符串延迟取各版一轮的分位数。测量只计合成调用，超时则覆盖 Worker 的完整任务。

同机环境为 Windows、i7-14650HX、Node v24.22.1。表格任务上该次测量的中位数下降，字符串任务的第 95 百分位上升。CPU 负载、工具链及搜索语法都会影响时间。性能数字只比较 ExampleLoom 的两个版本。引擎哈希为 `cc4f09ad13cc9494cc3c92a6623796b637e7a97dc6900ea3789d3e04e0698ac9`。[测量代码版本](https://github.com/zhangbowen2006/ExampleLoom/tree/28f293f3d15a8f488d21c593d0e1d347d943ed99)

```sh
node scripts/build.mjs
python scripts/fetch-baseline.py
node scripts/compare-benchmarks.mjs
python scripts/import-sygus.py
node scripts/benchmark-strings.mjs --paired
```

可另运行 `python scripts/verify-grouping.py`。用 IANA 时区库中顺序取出的两批共 30 条记录学习，再对余下 282 条计算各地区时区数，SQLite 独立产生参考输出。使用 pandas 的 36 项构造差分测试与上述两个外部任务集分别统计。[IANA 逐批验证](evidence/iana-counts-v0.5.0.json) · [pandas 验证](evidence/pandas-v0.5.0.json)
