The pace and volume of code churn necessary to evolve modern software systems present challenges for analyzing the performance impact of any set of code changes. Traditional methods used in performance analysis rely on extensive data collection and profiling, which often takes days. For large organizations utilizing Continuous Integration (CI) and Continuous Deployment (CD), these traditional techniques often fail to provide timely and actionable data. A different impact analysis method that allows for more efficient detection of performance regressions is needed. We propose the utilization of user mode memory allocator churn as a novel approach to performance engineering. User mode allocator churn acts as a proxy metric to evaluate the relative change in the cost of specific tasks. We prototyped the memory allocation churn methodology while engaged in performance engineering for a major iOS application. We find that calculating and analyzing memory allocator churn (a) results in deterministic measurements, (b) is efficient for determining the presence of both individual performance regressions and general performance-related trends, and (c) is a suitable alternative to measuring the task completion time.
翻译:为了发展现代软件系统而必需的代码量和速度对分析任何一套代码变化的性能影响提出了挑战。在业绩分析中使用的传统方法依靠广泛的数据收集和特征分析,而这往往需要几天时间。对于使用连续整合(CI)和连续部署(CD)的大型组织来说,这些传统技术往往不能提供及时和可操作的数据。需要一种不同的影响分析方法,以便能够更有效地检测性能回归。我们提议使用用户模式内存缩放器作为新的性能工程方法。用户模式内存缩放器作为代用指标,用来评估具体任务成本的相对变化。我们先用记忆分配方法进行原型,然后为大型iOS应用进行性能工程设计。我们发现计算和分析记忆缩略图(a) 导致确定性能测量结果,(b) 有效确定个人性能回归和一般性能趋势的存在,以及(c) 是衡量任务完成时间的合适替代方法。