Predicting the performance of software at development time, prior to actually executing or benchmarking it, is known to be highly challenging. In this project, we investigate predictive models that use a powerful graph representation of software source code (FA-ASTs, or flow-augmented ASTs) and graph neural networks to predict the execution time of specific workloads in Java programs (examples include benchmark or test execution times).
We train our prediction model using a combination of publicly available performance measurements (e.g., test execution times from the public continuous integration environments of open source systems) as well as custom-collected benchmarking information.
The goal of this project is to (a) demonstrate that sufficiently accurate software performance estimation is feasible using modern machine learning methods, and (b) to provide pre-trained performance models for Java code in different domains (e.g., database systems, programming libraries, etc.).