RAPGen: An Approach for Fixing Code Inefficiencies in Zero-Shot
Spandan Garg, Roshanak Zilouchian Moghaddam, Neel Sundaresan
TL;DR
The paper addresses the challenge of fixing performance bugs by introducing RAPGen, a Retrieval-Augmented Prompt Generation framework that uses a knowledge-base of past performance fixes to generate targeted prompts for zero-shot bug repair with LLMs. RAPGen constructs a Code Transformation Knowledge-base from GitHub PERF commits, retrieves an appropriate instruction, and prompts an LLM to produce a fix, avoiding expensive fine-tuning. Empirical results on the DeepDev-PERF dataset show RAPGen achieves correct suggestions in about 60% of cases and verbatim fixes in roughly 42%, with stronger performance in both automated and human evaluations, and in-the-wild evidence from real production codebases. This work demonstrates the viability of knowledge-base–guided prompt engineering for code repair, offering a low-cost alternative to fine-tuning and a path toward extending to other languages and bug types.
Abstract
Performance bugs are non-functional bugs that can even manifest in well-tested commercial products. Fixing these performance bugs is an important yet challenging problem. In this work, we address this challenge and present a new approach called Retrieval-Augmented Prompt Generation (RAPGen). Given a code snippet with a performance issue, RAPGen first retrieves a prompt instruction from a pre-constructed knowledge-base of previous performance bug fixes and then generates a prompt using the retrieved instruction. It then uses this prompt on a Large Language Model (such as Codex) in zero-shot to generate a fix. We compare our approach with the various prompt variations and state of the art methods in the task of performance bug fixing. Our evaluation shows that RAPGen can generate performance improvement suggestions equivalent or better than a developer in ~60% of the cases, getting ~42% of them verbatim, in an expert-verified dataset of past performance changes made by C# developers.
