JETO-Bench
收藏资源简介:
JETO-Bench是由苏黎世联邦理工学院的研究团队创建的一个用于评估Java程序执行时间改进补丁的可复现基准数据集。该数据集包含了从174个开源Java仓库中收集的91个经过人工验证的可执行ETIP(执行时间改进补丁),这些数据覆盖了长达11年的开发历史,总计扫描了近180万次提交。数据集的构建过程采用了JETO-Mine工具的三阶段自动化流水线,包括基于静态分析的补丁识别、基于动态分析与Docker容器化的可复现环境创建,以及结合统计测试的客观性能验证。该数据集主要应用于自动程序修复(APR)和性能优化研究领域,旨在为评估和提升编码代理在解决Java执行时间问题上的能力提供标准化、可扩展的测试基准,并揭示当前开源项目中缺乏量化性能测试的现状。
JETO-Bench is a reproducible benchmark dataset constructed by a research team at ETH Zurich for evaluating Java program execution time improvement patches. This dataset contains 91 manually validated executable ETIPs (Execution Time Improvement Patches) collected from 174 open-source Java repositories, spanning an 11-year development history with a total of nearly 1.8 million commits scanned. The dataset's construction adopts a three-stage automated pipeline from the JETO-Mine tool, including patch identification via static analysis, creation of reproducible environments through dynamic analysis and Docker containerization, and objective performance validation integrated with statistical testing. This dataset is primarily applied in the fields of automatic program repair (APR) and performance optimization research, aiming to provide a standardized, scalable test benchmark for evaluating and improving the capabilities of coding agents in resolving Java execution time-related issues, as well as revealing the current shortage of quantitative performance testing in open-source projects.
数据集概述
名称:JETO-Bench
目的:为Java语言中可提升执行时间的补丁(Execution Time Improving Patches, ETIPs)提供可复现的基准测试。
核心内容:
- 可执行ETIPs的数据收集与过滤。
- 动态分析流水线。
- 补丁与测试的评估框架。
- 用于复现论文表格和图表的脚本与数据。
环境与依赖
- 操作系统:Linux
- Python版本:3.11及以上
- 包管理工具:Poetry
- 其他依赖:Docker(用于动态分析和评估框架)
安装步骤
bash poetry install
环境变量配置
需设置以下环境变量:
workingdir:工作目录,用于动态分析和评估流程。github_access_token:GitHub API访问令牌。OPENROUTER_API_KEY:用于配置LLM相关组件。OPENAI_API_KEY:用于配置LLM相关组件。
配置与过滤
静态和动态分析的用户定义过滤器和配置可在 src/config.py 中设置。
运行模式
主入口 main.py 支持三种分析模式,通过 --analysis-type 参数指定:
-
静态分析:运行提交收集流水线(CommitCollector),为默认模式。 bash poetry run python main.py
或显式指定: bash poetry run python main.py --analysis-type static
-
动态分析:运行动态分析流水线。 bash poetry run python main.py --analysis-type dynamic
-
评估框架:支持补丁评估(PatchEvaluator)和测试评估(TestEvaluator)。
- 补丁评估所需参数:
--evaluation-type patch、--repo、--after-commit、--output-analysis-path、--modified-modules(逗号分隔)、--patch-path。 - 测试评估所需参数:
--evaluation-type test、--repo、--after-commit、--output-analysis-path、--modified-modules(逗号分隔)、--test-patch-path、--tests(逗号分隔)。 - 可选参数:
--exec-times、--min-p-value、--min-exec-time-improvement、--working-dir。
- 补丁评估所需参数:
数据集与可复现性产物
- 已验证的ETIPs列表:位于
results/dataset.csv。 - 表格与图表复现:位于
results/目录下,相关脚本包括:results/charts/stars_year.pyresults/charts/repos.pyresults/charts/executable_etips_stats.pyresults/tables/modified.py
日志与输出
- 运行时日志:写入
logs/目录。 - 分析输出:根据CLI参数指定路径写入。




