Title: Navigate, Understand, Communicate: How Developers Locate Performance Bugs,
Abstract: Background: Performance bugs can lead to severe issues regarding computation
efficiency, power consumption, and user experience. Locating these bugs is a
difficult task because developers have to judge for every costly operation
whether runtime is consumed necessarily or unnecessarily. Objective: We wanted
to investigate how developers, when locating performance bugs, navigate through
the code, understand the program, and communicate the detected issues. Method:
We performed a qualitative user study observing twelve developers trying to fix
documented performance bugs in two open source projects. The developers worked
with a profiling and analysis tool that visually depicts runtime information in
a list representation and embedded into the source code view. Results: We
identified typical navigation strategies developers used for pinpointing the
bug, for instance, following method calls based on runtime consumption. The
integration of visualization and code helped developers to understand the bug.
Sketches visualizing data structures and algorithms turned out to be valuable
for externalizing and communicating the comprehension process for complex bugs.
Conclusion: Fixing a performance bug is a code comprehension and navigation
problem. Flexible navigation features based on executed methods and a close
integration of source code and performance information support the process.