Software performance is critical for how end users perceive the quality of the deployed software. Performance problems, also called "performance bugs", typically correspond to software faults that create significant performance degradation. Much evidence shows that seemingly harmless performance problems can lead to severe scalability reductions and financial losses. This project develops a set of new techniques and tools that can significantly improve performance testing and debugging.
Specifically, the project focuses on three key challenges. First, what are common patterns of performance bugs and how can these patterns be detected during testing, before they manifest in production runs? Second, how to ensure that code changes for adding new features, fixing bugs, or even improving performance do not have unintended consequence of decreasing performance? Third, how to find causes of performance bugs from testing runs, regression checks, and in-field execution traces? The broader impacts of the project are that improved performance testing and debugging can substantially increase the quality of the deployed software and thus the quality of life in a modern society that heavily depends on software.