μOpTime:利用稳定性指标静态缩短微基准测试套件的执行时间

《ACM Transactions on Software Engineering and Methodology》:μOpTime: Statically Reducing the Execution Time of Microbenchmark Suites Using Stability Metrics

【字体: 时间:2025年11月07日 来源:ACM Transactions on Software Engineering and Methodology

编辑推荐:

  微基准测试套件执行时间优化研究。提出μOpTime静态离线方法,通过统计稳定性指标(如RMAD、CV、RCIW)计算各微基准最小执行配置。实验表明,Go项目平均节省76.8%时间,Java项目节省42.77%时间,且RCIW3指标使Java项目85%微基准结果偏差低于3%。验证了在CI/CD中有效检测性能变化的可行性,错误正负率分别为3/2(Go)和29/7(Java)。贡献包括:μOpTime优化框架、跨语言稳定性指标选择策略、云环境基准测试工具。

  在软件开发过程中,性能回归问题对软件质量有着重大影响。为了在软件部署到生产环境之前发现这些回归问题,通常会执行性能测试,例如使用微基准测试(microbenchmarks),这些测试可以在子程序级别衡量软件的性能。然而,随着微基准测试数量的增加,执行这些测试可能会花费数小时,这使得它们难以频繁用于持续集成和持续交付(CI/CD)流水线。为了解决这一问题,本文提出了一种名为 μOpTime 的静态方法,该方法通过为每个微基准测试配置重复次数,减少微基准测试套件的执行时间。μOpTime 利用之前完整微基准测试套件运行的结果,确定最小的重复次数,这些重复次数仍然能保证测试结果的准确性。我们通过实验研究评估了 μOpTime 在 14 个开源项目中的表现,涵盖两种编程语言和五种稳定性指标。

实验结果显示,μOpTime 能够将微基准测试套件的执行时间(测量阶段)减少高达 95.83%(Go 项目)和 94.17%(Java 项目)。此外,选择不同的稳定性指标会影响测试结果的准确性,这种选择依赖于具体的项目和编程语言。对于 Java 项目,微基准测试的预热阶段(warmup phase)需要特别考虑,这可能会导致更高的执行时间减少。最后,我们证明 μOpTime 可以在 CI/CD 流水线中可靠地检测性能回归。

为了评估 μOpTime 的有效性,我们提出了四个研究问题(RQ1-RQ4)并进行了深入分析。首先,我们研究了 μOpTime 在不降低测试结果准确性的情况下,对微基准测试套件执行时间的缩短程度。其次,我们探讨了不同稳定性指标对执行时间减少的影响。第三,我们分析了 Java 微基准测试结果的准确性如何受到预热阶段的影响。最后,我们评估了 μOpTime 在 CI/CD 流水线中检测性能变化的效果。

在实验中,我们使用了三个不同的数据集,包括 3 个 Go 项目和 11 个 Java 项目。对于每个数据集,我们收集了微基准测试结果,并通过实验验证了 μOpTime 的有效性。结果显示,使用 RMAD 作为稳定性指标时,μOpTime 能够在 Go 项目中将执行时间减少高达 95.97%,在 Java 项目中减少高达 94.17%。然而,对于 Java 项目,RMAD 会导致准确性下降,因此推荐使用 RCIW1 或 RCIW3。在考虑预热阶段的情况下,μOpTime 能够将 Java 项目的执行时间减少高达 63.58%,并且保持高准确性,所有项目中超过 80% 的微基准测试结果在 3% 的偏差范围内。

在 CI/CD 流水线中,μOpTime 通过为每个微基准测试确定最小的执行配置,显著提高了性能测试的效率。我们模拟了现实中的 CI/CD 流水线,并展示了 μOpTime 在不同项目中的表现。结果显示,使用 μOpTime 的最小配置,可以检测到与完整配置相同的性能变化,同时减少了执行时间。对于 Go 项目,μOpTime 检测到 55/57 个性能变化,误报率(FPR)和漏报率(FNR)都很低。对于 Java 项目,μOpTime 检测到 82/89 个性能变化,误报率和漏报率也相对较低。

在讨论部分,我们分析了 μOpTime 的局限性和潜在改进方向。首先,我们需要管理检测到的性能变化,确保这些变化对实际应用有意义。其次,估计误报率和漏报率时,我们需要考虑全配置作为真实情况的基准。第三,Go 和 Java 项目在稳定性方面存在固有差异,这会影响 μOpTime 的效果。第四,云环境中的负载变化可能会影响测量结果,因此我们需要考虑这些因素。最后,我们建议在重大变更后重新执行优化,以确保微基准测试配置的准确性。

在相关工作部分,我们探讨了其他减少微基准测试执行时间的方法。这些方法包括动态停止测试、选择微基准测试子集以及应用测试用例优先级(TCP)技术。此外,我们还讨论了在 CI/CD 流水线中进行性能测试的其他方法,如应用基准测试和云基准工具。

结论部分总结了 μOpTime 的主要贡献,包括一个基于统计方法的静态优化方法,一个用于评估 μOpTime 的微基准测试数据集,以及一个广泛的实验评估。我们还展示了 μOpTime 在云环境中的应用,以及其在 CI/CD 流水线中的有效性。这些结果表明,μOpTime 能够显著减少微基准测试套件的执行时间,同时保持结果的准确性,这为在 CI/CD 流水线中实现持续基准测试提供了可能性。
相关新闻
生物通微信公众号
微信
新浪微博
  • 搜索
  • 国际
  • 国内
  • 人物
  • 产业
  • 热点
  • 科普
  • 急聘职位
  • 高薪职位

知名企业招聘

热点排行

    今日动态 | 人才市场 | 新技术专栏 | 中国科学人 | 云展台 | BioHot | 云讲堂直播 | 会展中心 | 特价专栏 | 技术快讯 | 免费试用

    版权所有 生物通

    Copyright© eBiotrade.com, All Rights Reserved

    联系信箱:

    粤ICP备09063491号