An Empirical Study on Method-Level Performance Evolution in Open-Source Java Projects
Kaveh Shahedi, Nana Gyambrah, Heng Li, Maxime Lamothe, Foutse Khomh

TL;DR
This study empirically analyzes how method-level code changes in open-source Java projects affect performance, revealing that nearly one-third of changes impact performance with regressions more common than improvements.
Contribution
It provides the first large-scale empirical validation of performance impacts at the method level, challenging assumptions and offering insights for better performance management in software development.
Findings
32.7% of method changes affect performance
Regressions are 1.3 times more frequent than improvements
Algorithmic changes have high improvement potential but high regression risk
Abstract
Performance is a critical quality attribute in software development, yet the impact of method-level code changes on performance evolution remains poorly understood. While developers often make intuitive assumptions about which types of modifications are likely to cause performance regressions or improvements, these beliefs lack empirical validation at a fine-grained level. We conducted a large-scale empirical study analyzing performance evolution in 15 mature open-source Java projects hosted on GitHub. Our analysis encompassed 739 commits containing 1,499 method-level code changes, using Java Microbenchmark Harness (JMH) for precise performance measurement and rigorous statistical analysis to quantify both the significance and magnitude of performance variations. We employed bytecode instrumentation to capture method-specific execution metrics and systematically analyzed four key…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsSoftware System Performance and Reliability · Software Engineering Research · Software Testing and Debugging Techniques
