arrow
返回

Predicting unstable software benchmarks using static source code features

delete2021-08-18
delete12
delete
OA
AI
C
Christoph Laaber *
M
Mikael Basmaci
P
Pasquale Salza
DOI:10.1007/s10664-021-09996-ydelete
delete原文链接
delete分享
delete收藏
查看原文
摘要

摘要

En 中文
Software benchmarks are only as good as the performance measurements they yield. Unstable benchmarks show high variability among repeated measurements, which causes uncertainty about the actual performance and complicates reliable change assessment. However, if a benchmark is stable or unstable only becomes evident after it has been executed and its results are available. In this paper, we introduce a machine-learning-based approach to predict a benchmark's stability without having to execute it. Our approach relies on 58 statically-computed source code features, extracted for benchmark code and code called by a benchmark, related to (1) meta information, e.g., lines of code (LOC), (2) programming language elements, e.g., conditionals or loops, and (3) potentially performance-impacting standard library calls, e.g., file and network input/output (I/O). To assess our approach's effectiveness, we perform a large-scale experiment on 4,461 Go benchmarks coming from 230 open-source software (OSS) projects. First, we assess the prediction performance of our machine learning models using 11 binary classification algorithms. We find that Random Forest performs best with good prediction performance from 0.79 to 0.90, and 0.43 to 0.68, in terms of AUC and MCC, respectively. Second, we perform feature importance analyses for individual features and feature categories. We find that 7 features related to meta-information, slice usage, nested loops, and synchronization application programming interfaces (APIs) are individually important for good predictions; and that the combination of all features of the called source code is paramount for our model, while the combination of features of the benchmark itself is less important. Our results show that although benchmark stability is affected by more than just the source code, we can effectively utilize machine learning models to predict whether a benchmark will be stable or not ahead of execution. This enables spending precious testing time on reliable benchmarks, supporting developers to identify unstable benchmarks during development, allowing unstable benchmarks to be repeated more often, estimating stability in scenarios where repeated benchmark execution is infeasible or impossible, and warning developers if new benchmarks or existing benchmarks executed in new environments will be unstable.
Keyword:
Performance testing
Software benchmarking
Performance variability
Source code features
Machine learning for software engineering
Go
AI总结

AI总结

对已上传原文的论文进行重点信息的提取,主要内容包括:简要概述、研究摘要、背景介绍、关键亮点、图文解析、展望与总结。

期刊

Empirical Software Engineering 封面图
Empirical Software Engineering
IF:
3.6
论文数:
2.0K
被引数:
5.3K

机构

U
university of zurich
学者数:
5.1W
论文数: 4.0W
被引数: 65
引用论文

引用论文

Green Corrosion Inhibition
err2024-02-02
err0
PREAI
errBharti Sheokand; Seema R. Pathak; Chandan K. Mandal; Drishti Gupta; Deepti Verma; Kamalakanta Behera; Ambrish Kumar; Monika Vats; Shruti Trivedi
err分享
err收藏
In-situ synthesis of hierarchical Mn-decorated NiCo2S4 nanosheet arrays on Ni foam as binder-free electrodes for high-performance supercapacitors
err2017-06-12
err0
PREAI
errJicai Liang; Peng Sun; Guangyi Chen; Wanxi Zhang; Kaiyuan Zhou; Wenzhuo Zhang; Jiaang Liu; Zhipeng Zhang; Min Zhou; Wan Hou; Fu Niu
err分享
err收藏
err分享
err收藏
Successful Use of Transureteroureterostomy in Children: A Clinical Study
err2001-12-01
err0
PREAI
errC. Pesce; L. Costa; P. Campobasso; M. A. Fabbro; L. Musi
err分享
err收藏
Geopolitics and discourse地缘政治与话语
err1992-03-01
err0
PREAI
errGearóid Ó Tuathail; John Agnew
err分享
err收藏
err分享
err收藏
学者 查看更多内容