为什么重要
几乎所有 Coding Agent 基准(SWE-bench、LiveCodeBench、HumanEval)衡量的都是功能正确性——Agent 能不能写出通过测试的代码。但生产软件还要求可测量的性能加速。PERFOPT-Bench 是首个系统评估 AI Coding Agent 完成全链路性能优化能力的基准。
核心创新:它不测”能不能修 bug”,而是测”能不能把一段正确但慢的代码变快,且不引入新 bug”。这要求 Agent 同时具备:
- 性能分析:profiling、识别热点
- 跨层瓶颈诊断:区分 CPU/内存/IO/算法层面的问题
- 正确性保持:优化后不能破坏原有功能
- 可复现性验证:加速必须是真实的,不是测量噪声
构建方式
- 半自动流水线:LLM 驱动类别生成 → 私有参考求解 → 试点校准 → 专家策展
- 每个任务提供一个正确但故意低效的代码库
- 要求 Agent 改进目标性能指标(执行时间/内存分配/吞吐量等)
- 评分需要:隐藏正确性测试 + 验证加速 + 轨迹审计(三重门)
- 覆盖:工具链配置、SIMD 使用、内存局部性、缓存行为、算法重构等
关键发现
- 无单一模型/框架主导:优化性能是工作负载依赖的,不同任务上最优栈不同——这打破了”强模型 = 强优化”的直觉
- Agent 框架(脚手架)改变同一 LLM 的加速 profile:同一模型在不同框架下的优化能力差异显著
- 原始加速比不可信:部分大幅加速来自 benchmark-specific shortcut exploitation(如利用已知测试模式走捷径而非真正优化)
- Relay 可恢复额外优化空间:首次优化会话停止后,从外部化优化摘要重启可发现更多加速机会
- 与功能正确性基准分离:强代码生成模型未必擅长性能优化——这是独立能力维度
实验设置
7 个 Agent 栈(不同 LLM + 不同 Agent 框架组合)× 12 个长程优化任务。每个任务要求 Agent:
- 读取代码库和优化目标
- 运行性能测试建立基线
- 用 profiler 诊断瓶颈
- 实施代码修改
- 验证正确性(隐藏测试)和加速
- 循环迭代直到满意或超时
与已有基准的定位差异
| 基准 | 测什么 | 核心指标 |
|---|---|---|
| SWE-bench Pro | Bug 修复 | 功能正确性 |
| LiveCodeBench | 竞赛编程 | 一次生成正确率 |
| Terminal-Bench 2.0 | 终端工程任务 | 任务完成率 |
| PERFOPT-Bench | 性能优化 | 验证加速比 |
| DeepSWE | 原创工程任务 | 功能正确性 |
PERFOPT-Bench 是唯一专门评估 “优化循环”(profile→diagnose→edit→verify)而非”修复循环”的基准。