这两条迹线在或多或少静态菜单上的iPhone 6S +上相隔几分钟才被捕获。一个在8ms左右完成,另一个在14ms左右完成。游戏将在7-8毫秒的渲染时间内非常愉快地坐着,然后,由于某种显而易见的原因,会在一段时间内上升到14毫秒的帧时间。
令人困惑的是,在“慢速”轨迹中,单个绘制调用所花费的时间几乎是“快速”轨迹中的两倍,尽管我看不出它们之间有什么区别。特别是第一个绘制调用是值得注意的:屏幕填充四边形带有一个非常简单的着色器,可以在1.x ms或2.x ms中完成,(据我所知)两次都使用相同的GL设置。
我可以将两个跟踪都加载到xcode中并单击'analyse',结果是完全可重复的:慢跟踪总是很慢,而快速跟踪总是很快,我看不出有什么不同!
注意:是的,我们的引擎生成了一些冗余的GL调用。它们在两条轨迹上都是相同的,因此它们不是本研究的重点。是的,前两个呼叫是实现全屏填充的一种糟糕方法。我已经与设计师交谈过:)再说一次:这里不是重点,因为问题是为什么这些调用在一条轨迹中的花费是另一条轨迹的两倍?
答案 0 :(得分:0)
游戏将在7-8毫秒的渲染时间内非常愉快地坐着,然后, 很明显的原因,一段时间会上升到14ms。
我认为您在这里看到的是设备上的动态节能。如果您舒适地达到帧速率目标,则操作系统可以降低CPU / GPU的时钟速度,以减少能耗和热量产生。
不幸的是,这种行为使得很难描述性能。我不知道有任何方法可以禁用此功能以进行性能测量,也不能查看当前的CPU / GPU时钟速度(或已关闭的内核数)以确认引起混淆的原因。
我没有看过您的踪迹,但是您认为较慢的踪迹实际上可能稍快一些,并且处于操作系统决定将时钟速度降低一半以节省能源的阈值之下。