Perf Primer CPU, GPU and your Android game - 1501080017

video_screenshot

视频发布时间

2014年6月12日

视频介绍

Quickly finding your games' performance bottleneck is critical to address development issues before they become a problem. In this talk, we'll cover 4 simple steps to follow in order to determine what part of your CPU / GPU pipeline that your game is currently choking on. Find the problem, fix it quick, and be on your way.

视频推介语

暂无,待补充。

译者信息

翻译

润稿

终审

原始链接

中文字幕

翻译流水号

加入字幕组

——

——

——

1501080017

解说词中文版:

让我们来举个例子 你得到了某些非常棒的

有着几十万下载量的Android游戏

但是看起来你不能打破这种已经有百万用户做过的标记

理由是

用户们对你的游戏的性能非常的不满意

你看 用户注意到了在你的游戏中其他的部分

比如说项目状态或者是UI界面或者是

任何的其他的功能都没有非常糟糕的性能更加突出

或者换句话说 你的字符之一在三级层面上

事实上是在说克林贡语

然后你猜怎么了

用户对于游戏性能非常糟糕的问题给出了中差评的比例

高于你的游戏出现的其他的问题而导致的中差评

你真的想要拥有百万以上的用户量

所以你一定要解决你的游戏的性能问题

对于现代的Android游戏而言

你应该开始理解它们有一种紧密的联系

例如探戈舞 如果在你的游戏中

CPU和GPU可以相互协作

则会对性能产生极大的影响

这种原理与CPU和GPU协作是有相似之处的

现代的图形API不允许

CPU直接和GPU硬件建立连接

相反的 它有一个中间的过程

是我们所熟知的图形驱动程序

来处理CPU与GPU之间的通信

从CPU中取出的请求会被缓存在

硬件驱动中作为一个消息队列

当GPU硬件已经准备好接收任务的时候

它会从相同的资源开始执行命令

并在GPU上面开始执行它

在驱动程序的消息队列中存在

意味着CPU可以以不同的速度

推送信息到驱动

GPU在从队列中读取消息

与此同时 你的GPU可以假设处理

并且在CPU之后绘制

大约1到2帧的数据

现在 即使报警 也不需要担心

这其实是典型的现代的硬件体系架构

但是要记住这一点

了解你的游戏一旦达到了60帧的帧率

那么就要求你的CPU和GPU的帧数

都在16毫秒内完成了它们所有的工作

当这两个系统中开始同步的时候

需要更长的时间

你的帧速率将变得更加糟糕

举个例子 如果你的GPU

比CPU做了更多的工作呢

这说明你的CPU提交的已经处理过的帧数

到驱动中以一个比GPU更快的频率工作

实际上是GPU将浪费掉更多的资源

最终 驱动队列会被填满

之后在任意一段时间内

CPU想要去发送一个硬件调用指令

它就会停下来 等待GPU的相应

并且去按照顺序清理掉一些指令

释放一些空间去保证CPU可以

继续的向硬件驱动队列发送它的新指令

另一方面 如果你的CPU被绑定了

然后你向GPU的工作线路中插入新的任务

每次CPU发送一帧的数据

GPU会立刻使用它并进行处理

然后等待下一帧的数据

它就可以继续工作了

要解决这个问题的最直接的办法就是

让CPU做更少的工作

但是在这种情况下 可能会出现

GPU没有足够多的工作去做并且正确的动作是

实际上是有序的给它更多的工作

以最大限度的发挥GPU的数据吞吐量

对于设计者来说这是一个很好的机会

在屏幕上放置200多个僵尸

你可以估计你的问题所在

去认真的研究一下CPU在几秒钟的模拟时间里的

帧数数据

举个例子 如果你的CPU帧数处理时间

大约在16毫秒

那么你的游戏会运行的非常棒

现在 你的目标是去保持帧数数据

的处理时间在16毫秒以下 某些帧数

随CPU加载而变化 你还希望时间有一些小差异

然而 如果你的帧数突然开始飙升

你的CPU数据运算结果还没有加载完成

那么你将不能在屏幕上放置200个僵尸

有很大的可能是由于GPU

做了备份 强迫CPU在驱动程序中

去拖延时间

这些高峰实际上是说大概在11-15毫秒的时间

GPU到底需要多长的

时间去进行冲洗帧操作

为了发现真正的罪魁祸首是什么

是时候坐下来然后

熟练掌握移动数据分析工具了

一些GPU性能的细微差距

需要特殊的工具去发现它

值得庆幸的是 每一个Android芯片制造商

都提供了一套非常强大的工具包

给了你更多的信息并告诉你们

如何针对他们的硬件去优化你的游戏

理解和调整CPU和GPU之间的协作的第一步

是最大化你的游戏的性能

当然 这样的结果会使用户们更加高兴

游戏则会有更好的购买量

这才是最重要的 不是吗

所以 静下来 像往常一样去测试你的代码

一定要记住性能是非常重要的

Last updated

Was this helpful?