遇见数据集

JETO-Bench

收藏
arXiv2026-06-30 更新2026-07-02 收录
数据链接:
官方服务:

资源简介:

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.

创建时间:
2026-06-30
原始信息汇总

数据集概述

名称: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 参数指定:

  1. 静态分析:运行提交收集流水线(CommitCollector),为默认模式。 bash poetry run python main.py

    或显式指定: bash poetry run python main.py --analysis-type static

  2. 动态分析:运行动态分析流水线。 bash poetry run python main.py --analysis-type dynamic

  3. 评估框架:支持补丁评估(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.py
    • results/charts/repos.py
    • results/charts/executable_etips_stats.py
    • results/tables/modified.py

日志与输出

  • 运行时日志:写入 logs/ 目录。
  • 分析输出:根据CLI参数指定路径写入。
搜集汇总
数据集介绍
JETO-Bench 数据集图片
构建方式
JETO-Bench的构建依托于JETO-Mine这一可配置且可复用的自动化流水线。该流水线包含三个阶段:首先,静态分析阶段通过扫描GitHub仓库,依据用户定义的筛选条件(如项目星标数、文件修改数量)及基于大语言模型的问题分类器,从逾170万次提交中识别出660个执行时间改进补丁(ETIP)。其次,动态分析阶段将识别出的ETIP封装至Docker镜像中,通过多次运行项目测试并进行统计检验,以客观验证执行时间是否获得显著改善,最终生成102个可执行的ETIP。最后,评估工具链提供定量评估生成的补丁与测试的能力,确保环境的可复现性与评估的严谨性。
特点
JETO-Bench具有鲜明的特色:它是首个专为Java语言设计的可复现执行时间改进补丁基准测试,涵盖从174个开源Java仓库收集的660个已识别ETIP与91个经人工验证的可执行ETIP,时间跨度长达11年。该基准测试的补丁来源多样,涉及分布式系统、数据管理、云原生框架等主题,且包含多文件、多模块的仓库级补丁,适合评估高级补丁生成工具。此外,JETO-Mine的静态分析阶段实现了96%的精确度,而其动态分析通过Docker容器化与统计测试(如配对二项检验)有效应对了JVM即时编译与垃圾回收带来的执行时间波动,确保了评估的可靠性。
使用方法
JETO-Bench的使用方式灵活而系统。研究人员可直接利用基准测试中的可执行ETIP,通过JETO-Mine提供的评估工具链运行生成的补丁:首先拉取对应的Docker镜像,在容器中应用补丁至原始版本,随后多次执行测试并提取执行时间,最后进行统计检验以判断补丁是否带来显著的性能提升。该工具还支持对测试生成工具的评估,通过运行生成的测试类在原始与修补版本上,检验其能否检测到执行时间的改进。研究者可根据自身需求调整统计检验的参数(如执行次数、最小改进百分比、p值),从而自定义评估的严格程度,实现灵活而标准的评价流程。
背景与挑战
背景概述
随着自动化程序修复技术的飞速发展,性能缺陷的自动修复逐渐成为软件工程领域的研究热点。然而,现有基准测试集如Defects4J、SWE-Bench等主要聚焦于功能性错误,对执行时间优化问题关注不足。为填补这一空白,瑞士苏黎世联邦理工学院(ETH Zurich)的Khashayar Etemadi与Zhendong Su于2026年提出了JETO-Bench,这是首个面向Java语言的可扩展、可复现的执行时间改进补丁基准测试集。该数据集通过其配套工具JETO-Mine,对174个开源Java项目近11年、约180万次提交进行静动态分析,最终筛选出660个识别补丁及91个经人工验证的可执行补丁。JETO-Bench的诞生不仅弥补了Java在性能优化基准测试领域的长期缺位,更为评估编码代理(如OpenHands)在真实项目中的性能修复能力提供了标准化平台,对推动自动化性能修复研究具有里程碑意义。
当前挑战
JETO-Bench在设计之初便需应对两大核心挑战。其一,Java语言固有的性能测量难题构成了领域内的首要障碍:Java虚拟机(JVM)的即时编译(JIT)与垃圾回收(GC)机制导致执行时间波动剧烈,短时测试中测量噪声极易掩盖真实的性能改进,这要求基准测试必须具备比Python或C++更为严格的统计检验与容器化隔离环境。其二,构建过程同样充满挑战:JETO-Mine需在数千万次提交中精准识别执行时间优化补丁,为此设计了基于LLM的议题分类器与多阶段过滤管线,然而手动验证后发现仅14.3%的补丁能被主流编码代理正确修复,且绝大多数开源Java项目缺乏能定量证明执行时间提升的测试用例。这种海量候选与低验证通过率之间的鸿沟,揭示了当前自动化性能修复技术仍在摸索前行,而JETO-Bench正是这一困境的忠实镜像与破局起点。
常用场景
经典使用场景
JETO-Bench作为首个面向Java语言的可复现执行时间改进补丁基准,其经典使用场景在于评估与比较自动化程序修复工具在性能优化任务上的表现。研究者可借助该基准,将待评估的编码智能体或补丁生成系统部署至其封装的Docker环境中,通过静态分析与动态执行的融合策略,精准衡量工具在修复真实Java项目中执行时间缺陷时的正确率与效率。该基准涵盖660个已识别补丁与91个经人工验证的可执行实例,为跨语言性能修复研究提供了可参照的Java领域标杆。
实际应用
在实际工程场景中,JETO-Bench的核心价值体现在为软件质量保障团队提供标准化的性能回归测试平台。借助其可配置的流水线,开发组织能够持续从自身代码仓库中挖掘执行时间改进模式,并将生成的Docker镜像集成至持续集成管道,实现对代码变更性能影响的自动化监控。此外,该数据集可直接用于训练与评估面向Java应用的性能感知编码助手,助力提升工业级软件系统中性能优化的自动化水平。
衍生相关工作
JETO-Bench的发布催生了一系列富有启发性的衍生工作。基于其提供的可执行环境与评估框架,研究者针对OpenHands等前沿编码智能体开展了系统性实证研究,揭示了当前智能体在Java性能修复任务上14.3%的成功率,并指出其在跨模块复杂缺陷定位上的局限性。该基准还激发了执行时间补丁检测测试自动生成这一新兴研究方向,其评估框架已被后续工作用于验证测试生成工具的有效性,推动了性能感知程序修复技术的纵深发展。
以上内容由遇见数据集搜集并总结生成
二维码
社区交流群
二维码
科研交流群
商业服务