监控UNITY性能(第一部分)
发表于2016-04-19
原文作者未做版权声明,视为共享知识产权进入公共领域,自动获得授权
大家好!我的名字是SakariPitkänen 。我是Unity工具团队的一名开发人员。在这篇文章林冕,我将讲述下我们如何对unity的开发分支进行自动化性能测试。
测试配置(平台、操作系统、版本)越来越多,使得越来越难以追踪所有的事情。我们需要可视化所有我们需要的数据。我们要获取Unity性能数据的主要原因是为了防止性能下降。
发现性能下降
在做日常开发的时候,我们可能不会注意到性能随着时间在下降,但是这是一个大问题。我们总是希望下一个版本的Unity比当前版本性能更好-我们绝对不希望它更慢。
我们目前大部分性能测试都是对一些特定函数测量消耗的时间。比如我们可以测试用特定的渲染功能渲染一定数量的帧需要的时间。测试的设计目的是为了找到下降的地方,所以测试会覆盖游戏的很多功能。当我们运行一个测试的时候,我们多次运行得到均值,所以一次不良的反应不会对整个结果有很大的影响,除了时间以外,我们还可以考虑其他变量比如内存使用量等。
在深入如何做的细节之前,让我们看一个具体的例子:我们如何发现性能下降以及通过数据找到修复点。
性能回归和修复
在Unity4.3,我们在一个特定的平台windows发现性能下降.下面的表是在4个不同平台运行2个不同版本的结果。对于这些测试,时间的单位是毫秒。这张表并不直接显示性能,而是列出一些样本值。这意味着一个测量值的增大会意味着性能的下降(红色)而减少意味着性能的提高(绿色)。
结果表明,在Windows平台的许多测试有非常明显的性能下降。从名字推测是图形相关的。不幸的是,当4.3发布的时候,我们仍然在开发测试系统,所以我们没有在发布之前及时捕获这个问题。下次不会再出现这个问题,我们扩大了测试范围,期望能显著减低开发过程中性能降低的风险。
我们通过测试找到了这个问题的原因并且在4.3.1中修复了这个问题。然后我们重新跑了这些测试,并且对.2, 4.3.0和 4.3.1的结果进行了比较。
我们可以确认这次修改是有效的,并且测试说明Unity4.2和4.3.1版本之间没有显著的性能变化。
在这篇文章的第二部分,我将告诉你我们是如何构建了性能测试。