Discovering, reporting, and fixing performance bugs

Discovering, reporting, and fixing performance bugs
复制标题

DOI:
10.1109/msr.2013.6624035
复制
发表时间:
2013-05
期刊:
2013 10th Working Conference on Mining Software Repositories (MSR)
影响因子:
--
通讯作者:
Adrian Nistor;Tian Jiang;Lin Tan
Adrian Nistor;Tian Jiang;Lin Tan
中科院分区:
其他
文献类型:
--
作者:
Adrian Nistor;Tian Jiang;Lin Tan

文献摘要

被引文献

相似文献

软件性能对于用户如何看待软件产品的质量至关重要。性能错误 - 导致大量性能退化的编程错误 - 导致用户体验差和系统吞吐量低。设计有效的技术来解决性能错误,需要深入了解如何发现,报告和固定绩效错误。在本文中,我们研究了如何发现绩效错误,向开发人员报告和由开发人员确定,并将结果与​​非表现错误的结果进行比较。我们从三个流行的代码库中研究绩效和非表现错误:Eclipse JDT,Eclipse SWT和Mozilla。首先,我们几乎没有证据表明修复性能错误比修复非绩效错误更有机会引入新的功能错误,这意味着开发人员可能不需要过度关注解决性能错误。其次,尽管修复性能错误与修复非绩效错误相比,修复性能错误比修复非绩效错误更加困难,这表明开发人员需要更好的工具支持来修复性能错误和测试性能错误补丁。第三,与许多非绩效错误不同,很大一部分性能错误是通过代码推理发现的,而不是通过用户观察错误的负面影响(例如,性能退化)或通过分析。结果表明,需要帮助开发人员推理性能,更好的测试序列以及发现性能错误的技术。
Software performance is critical for how users perceive the quality of software products. Performance bugs - programming errors that cause significant performance degradation - lead to poor user experience and low system throughput. Designing effective techniques to address performance bugs requires a deep understanding of how performance bugs are discovered, reported, and fixed. In this paper, we study how performance bugs are discovered, reported to developers, and fixed by developers, and compare the results with those for non-performance bugs. We study performance and non-performance bugs from three popular code bases: Eclipse JDT, Eclipse SWT, and Mozilla. First, we find little evidence that fixing performance bugs has a higher chance to introduce new functional bugs than fixing non-performance bugs, which implies that developers may not need to be over-concerned about fixing performance bugs. Second, although fixing performance bugs is about as error-prone as fixing nonperformance bugs, fixing performance bugs is more difficult than fixing non-performance bugs, indicating that developers need better tool support for fixing performance bugs and testing performance bug patches. Third, unlike many non-performance bugs, a large percentage of performance bugs are discovered through code reasoning, not through users observing the negative effects of the bugs (e.g., performance degradation) or through profiling. The result suggests that techniques to help developers reason about performance, better test oracles, and better profiling techniques are needed for discovering performance bugs.