分析起游戏的性能问题,往往离不开cpu和gpu。由于gpu的运算速度往往远超于cpu,一般情况cpu比gpu更容易出现性能问题。
cpu常见的性能问题以及优化思路
1、复杂的运算,如大量的for循环嵌套或者复杂的逻辑等等,都会cpu的负载上升。
优化思路:
(1)逻辑的简化或者算法的优化。
2、大量对象实例化,cpu会负载上升。当对象需要被回收时,产生gc,cpu的负载也会上升。·
优化思路:
(1)分帧处理
(2)对象池
3、内存空间不足,导致cpu与内存的数据交换受阻,只能借用磁盘空间,但磁盘的速度慢,cpu的性能无法发挥。并且当内存空间不足时会频繁触发gc。比较常见的场景是某个对象实例化后内存增加量十分高。
优化思路:
(1)优化数据结构,如用位运算存储bool类型的字段;用数组替换List,因为list的
扩容是成倍的。
4、渲染。每一次渲染,都需要cpu向gpu发送渲染命令,即drawcall。每个drawcall都会消耗cpu的性能。所以需要对多次绘制请求合并,减少drawcall,减少cpu的性能消耗。并且可以减少gpu切换渲染状态的次数,让gpu一次尽量做更多的处理,提高gpu的处理效率。
优化思路:
(1)合批。包括离线合批,实时合批(动态、静态合批)。
(2)遮挡剔除。
(3)动静分离。
(4)图集/动态图集。
gpu常见的性能问题以及优化思路