腾讯移动游戏技术评审标准与实践案例2018(C#性能优化详解)
腾讯的移动游戏开发标准,说实话还挺值得一看的,尤其是 C#效率那一块。GC、内存、字符串拼接,全都讲得明明白白。像foreach
怎么就比for
更容易产生 GC,文里还专门写了测试代码,蛮实用的。你用 Mono 搞 Unity 项目的话,这些细节别忽略。
调试工具方面,Mono和ILSpy这对组合还蛮好使的。一个是跨平台的.NET 运行时,一个是反编译利器,拿Assembly-CSharp.dll
一转,源码都出来了。你要搞懂项目里怎么写的、怎么跑的,全靠它们了。
文中还有一段挺有意思的:
object objValue = 4;
int value = (int)objValue;
编译后 IL 代码看着就复杂多了,有装箱又解箱。其实多 GC 问题就是从这些“小动作”里来的,尤其在 Mono 下,代价挺高。
说到 GC,循环结构是重点。foreach
虽然写起来顺手,但在性能敏感的场景下就成“坑”了。文里用testForeach_for()
、testForeach_foreach()
做对比,结果直观:foreach
多了装箱,GC 压力也大。
还有字符串拼接的事——用+
拼几次还行,一多就糟糕了。推荐用StringBuilder,少 GC,快不少。这种优化,在手游里效果蛮的,帧率也能稳些。
如果你正用 C#写游戏逻辑,或者 Unity 项目想提提性能,看看这篇案例还挺有启发的。顺带一提,像ILSpy 工具、AntsProfiler也都可以试试。
10.43MB
文件大小:
评论区