How Are Performance Issues Caused and Resolved?-An Empirical Study from a Design Perspective

How Are Performance Issues Caused and Resolved?-An Empirical Study from a Design Perspective
复制标题

DOI:
10.1145/3358960.3379130
复制
发表时间:
2020-04
期刊:
Proceedings of the ACM/SPEC International Conference on Performance Engineering
影响因子:
--
通讯作者:
Yutong Zhao;Lu Xiao;Xiao Wang;Lei Sun;Bihuan Chen;Yang Liu;A. Bondi
Yutong Zhao;Lu Xiao;Xiao Wang;Lei Sun;Bihuan Chen;Yang Liu;A. Bondi
中科院分区:
其他
文献类型:
--
作者:
Yutong Zhao;Lu Xiao;Xiao Wang;Lei Sun;Bihuan Chen;Yang Liu;A. Bondi

文献摘要

相似文献

关于现实生活中的性能问题是如何引起和解决的经验经验可以为从业者提供有价值的见解,以便有效地预防、检测和修复性能问题。以前的工作表明,大多数性能问题的根源在于糟糕的体系结构决策。本文对192个现实生活中的绩效问题进行了大规模的实证研究,重点是软件设计。首先,本文对不同项目中出现的八种常见根本原因和典型解决方案进行了整体分析,并调查了现有文献,特别是可以检测和修复每种类型性能问题的工具。其次,本研究首次从设计角度研究性能问题。在192个问题中,33%需要设计级优化,即同时修改一组相关源文件来解决问题。我们揭示了四种设计级优化模式,它们在解决不同的根本原因方面表现出不同的流行程度。最后,本研究调查了解决性能问题的投资回报率,以帮助从业者在本地化或设计级优化解决方案之间进行选择,并根据不同的根本原因对问题进行优先排序。
Empirical experience regarding how real-life performance issues are caused and resolved can provide valuable insights for practitioners to effectively and efficiently prevent, detect, and fix performance issues. Prior work shows that most performance issues have their roots in poor architectural decisions. This paper contributes a large scale empirical study of 192 real-life performance issues, with an emphasis on software design. First, this paper contributes a holistic view of eight common root causes and typical resolutions that recur in different projects, and surveyed existing literature, in particular, tools, that can detect and fix each type of performance issue. Second, this study is first-of-its-kind to investigate performance issues from a design perspective. In the 192 issues, 33% required design-level optimization, i.e. simultaneously revising a group of related source files for resolving the issues. We reveal four design-level optimization patterns, which have shown different prevalence in resolving different root causes. Finally, this study investigated the Return on Investment for addressing performance issues, to help practitioners choose between localized or design-level optimization resolutions, and to prioritize issues due to different root causes.