Navigate, Understand, Communicate: How Developers Locate Performance Bugs

Sebastian Baltes, Oliver Moseler, Fabian Beck, Stephan Diehl
<span title="">2015</span> <i title="IEEE"> <a target="_blank" rel="noopener" href="https://fatcat.wiki/container/6fd3ohrrr5hcxickohr2pogitu" style="color: black;">2015 ACM/IEEE International Symposium on Empirical Software Engineering and Measurement (ESEM)</a> </i> &nbsp;
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
more &raquo; ... ng 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.
<span class="external-identifiers"> <a target="_blank" rel="external noopener noreferrer" href="https://doi.org/10.1109/esem.2015.7321208">doi:10.1109/esem.2015.7321208</a> <a target="_blank" rel="external noopener" href="https://dblp.org/rec/conf/esem/BaltesMB015.html">dblp:conf/esem/BaltesMB015</a> <a target="_blank" rel="external noopener" href="https://fatcat.wiki/release/wfnhuvgiffednpqiki6enghhq4">fatcat:wfnhuvgiffednpqiki6enghhq4</a> </span>
<a target="_blank" rel="noopener" href="https://web.archive.org/web/20170829214959/http://www.visus.uni-stuttgart.de/uploads/tx_vispublications/esem15-debugging.pdf" title="fulltext PDF download" data-goatcounter-click="serp-fulltext" data-goatcounter-title="serp-fulltext"> <button class="ui simple right pointing dropdown compact black labeled icon button serp-button"> <i class="icon ia-icon"></i> Web Archive [PDF] <div class="menu fulltext-thumbnail"> <img src="https://blobs.fatcat.wiki/thumbnail/pdf/71/0a/710a1fef5eed68cbb2a7dfc12260402e8eec6891.180px.jpg" alt="fulltext thumbnail" loading="lazy"> </div> </button> </a> <a target="_blank" rel="external noopener noreferrer" href="https://doi.org/10.1109/esem.2015.7321208"> <button class="ui left aligned compact blue labeled icon button serp-button"> <i class="external alternate icon"></i> ieee.com </button> </a>