Performance problems in software systems often go unnoticed until they degrade user experience or system trustworthiness. Detecting such issues requires targeted profiling or specialized tests, which are costly to develop, time-consuming to execute, and impractical to scale. As a result, developers often lack early feedback on the performance impact of their code changes. These limitations point to a broader challenge in software engineering. Developers often need to know what to test and where performance bugs might exist. They also need to understand how changes in the code may affect execution time and energy usage. Gathering these insights early and efficiently is difficult, especially without heavily relying on software behavior at runtime. This thesis investigates whether it is possible to support early and scalable performance reasoning without relying on exhaustive profiling. We explore the use of static code features, lightweight dynamic features, and learning-based models to predict or explain performance-relevant properties at the method level. The goal is to assess how these approaches can help developers identify performance-sensitive code, understand testing needs, and estimate the potential impact of code changes on execution time and energy usage. The research is driven by the hypothesis that early and scalable performance reasoning is possible without relying on repeated execution or specialized instrumentation. To evaluate this hypothesis, the thesis presents four empirical studies, each addressing a specific challenge in the software performance engineering (SPE) pipeline. The first study investigates the limited coverage of performance tests and reveals that performance tests are not only fewer than functional ones, but also more expensive to execute. The second study examines whether static code features can help to predict which methods are likely to be performance-tested, uncovering that such features offer limited predictive power across diverse software systems. The third study evaluates large language models (LLMs) for detecting performance bugs directly from source code. While LLMs show some promise, they struggle with reasoning on dynamic behavior. The final study focuses on energy consumption and investigates whether method-level energy usage can be predicted using static features and execution time, offering partial success but also highlighting modeling limitations. Together, these studies map the opportunities and limitations of static analysis and machine learning in the detection of performance problems. The findings indicate that, while static features alone are insufficient, they may still contribute when combined with dynamic insights or advanced predictive models . The thesis contributes curated datasets, reproducible pipelines, and model artifacts to support future research in performance-aware and energy-aware software engineering.

Sull'automazione del rilevamento dei problemi di prestazioni nei sistemi software attraverso l'analisi empirica / Imran, Muhammad. - (2025 Dec 12).

Sull'automazione del rilevamento dei problemi di prestazioni nei sistemi software attraverso l'analisi empirica

IMRAN, MUHAMMAD
2025-12-12

Abstract

Performance problems in software systems often go unnoticed until they degrade user experience or system trustworthiness. Detecting such issues requires targeted profiling or specialized tests, which are costly to develop, time-consuming to execute, and impractical to scale. As a result, developers often lack early feedback on the performance impact of their code changes. These limitations point to a broader challenge in software engineering. Developers often need to know what to test and where performance bugs might exist. They also need to understand how changes in the code may affect execution time and energy usage. Gathering these insights early and efficiently is difficult, especially without heavily relying on software behavior at runtime. This thesis investigates whether it is possible to support early and scalable performance reasoning without relying on exhaustive profiling. We explore the use of static code features, lightweight dynamic features, and learning-based models to predict or explain performance-relevant properties at the method level. The goal is to assess how these approaches can help developers identify performance-sensitive code, understand testing needs, and estimate the potential impact of code changes on execution time and energy usage. The research is driven by the hypothesis that early and scalable performance reasoning is possible without relying on repeated execution or specialized instrumentation. To evaluate this hypothesis, the thesis presents four empirical studies, each addressing a specific challenge in the software performance engineering (SPE) pipeline. The first study investigates the limited coverage of performance tests and reveals that performance tests are not only fewer than functional ones, but also more expensive to execute. The second study examines whether static code features can help to predict which methods are likely to be performance-tested, uncovering that such features offer limited predictive power across diverse software systems. The third study evaluates large language models (LLMs) for detecting performance bugs directly from source code. While LLMs show some promise, they struggle with reasoning on dynamic behavior. The final study focuses on energy consumption and investigates whether method-level energy usage can be predicted using static features and execution time, offering partial success but also highlighting modeling limitations. Together, these studies map the opportunities and limitations of static analysis and machine learning in the detection of performance problems. The findings indicate that, while static features alone are insufficient, they may still contribute when combined with dynamic insights or advanced predictive models . The thesis contributes curated datasets, reproducible pipelines, and model artifacts to support future research in performance-aware and energy-aware software engineering.
12-dic-2025
Sull'automazione del rilevamento dei problemi di prestazioni nei sistemi software attraverso l'analisi empirica / Imran, Muhammad. - (2025 Dec 12).
File in questo prodotto:
File Dimensione Formato  
PhD_Thesis_Performance_Problems_Detection_Imran.pdf

accesso aperto

Descrizione: On Automating Performance Problems Detection in Software Systems through Empirical Analysis
Tipologia: Tesi di dottorato
Dimensione 5.17 MB
Formato Adobe PDF
5.17 MB Adobe PDF Visualizza/Apri
PhD_Thesis_Performance_Problems_Detection_Imran_1.pdf

accesso aperto

Descrizione: On Automating Performance Problems Detection in Software Systems through Empirical Analysis
Tipologia: Tesi di dottorato
Dimensione 5.17 MB
Formato Adobe PDF
5.17 MB Adobe PDF Visualizza/Apri
Pubblicazioni consigliate

I documenti in IRIS sono protetti da copyright e tutti i diritti sono riservati, salvo diversa indicazione.

Utilizza questo identificativo per citare o creare un link a questo documento: https://hdl.handle.net/11697/275203
Citazioni
  • ???jsp.display-item.citation.pmc??? ND
  • Scopus ND
  • ???jsp.display-item.citation.isi??? ND
social impact