Investigating Execution-Aware Language Models for Code Optimization
By: Federico Di Menna , Luca Traini , Gabriele Bavota and more
Potential Business Impact:
Makes computer code run faster, but not much.
Code optimization is the process of enhancing code efficiency, while preserving its intended functionality. This process often requires a deep understanding of the code execution behavior at run-time to identify and address inefficiencies effectively. Recent studies have shown that language models can play a significant role in automating code optimization. However, these models may have insufficient knowledge of how code execute at run-time. To address this limitation, researchers have developed strategies that integrate code execution information into language models. These strategies have shown promise, enhancing the effectiveness of language models in various software engineering tasks. However, despite the close relationship between code execution behavior and efficiency, the specific impact of these strategies on code optimization remains largely unexplored. This study investigates how incorporating code execution information into language models affects their ability to optimize code. Specifically, we apply three different training strategies to incorporate four code execution aspects -- line executions, line coverage, branch coverage, and variable states -- into CodeT5+, a well-known language model for code. Our results indicate that execution-aware models provide limited benefits compared to the standard CodeT5+ model in optimizing code.
Similar Papers
Do Large Language Models Understand Performance Optimization?
Distributed, Parallel, and Cluster Computing
Computers write faster, but sometimes make mistakes.
What I cannot execute, I do not understand: Training and Evaluating LLMs on Program Execution Traces
Machine Learning (CS)
Teaches computers to write and understand code better.
LLM-Aided Customizable Profiling of Code Data Based On Programming Language Concepts
Software Engineering
Helps computers understand code better for smarter programs.