目录
前言
移动端常见性能优化指标编辑
包体大小优化
FPS
CPU占用率
GPU占用率
内存
发热和耗电量
流量优化
前言
终于有时间了,我将在最近两个项目中进行优化的一些经验进行归纳总结以飨读者。因为我习惯用思维导图,所以归纳的内容主要以图来表达希望对大家有用。当然如下内容肯定有疏忽或者遗漏的地方,请大家不吝赐教。
一些性能优化工具使用:
https://unity.com/cn/features/profiling
https://blog.csdn.net/Tokyo_2024/article/details/105388523
https://blog.csdn.net/u013244147/article/details/104586401
移动端常见性能优化指标
1.包体大小优化
用工具分析优化资源类型:纹理,音频,视频,网格数据,骨骼动画,配置文件
【参考阅读】
https://www.jianshu.com/p/6fba4f474289
https://blog.csdn.net/m0_50811529/article/details/142587671
https://wenku.csdn.net/column/747zeubh9z
2.FPS
FPS是一个综合指标。其低于30,或者不稳定则都是因为其他地方的问题导致的,如下:
【参考阅读】
https://blog.csdn.net/qq_41084756/article/details/130934118
https://blog.csdn.net/wjj616806129/article/details/104031551
https://developer.unity.cn/projects/60e2a5f9edbc2a04cfc5e341
3.CPU占用率
重点检测:
-
执行耗时统计
-
GC大小统计
【参考阅读】
https://www.cnblogs.com/gozili/p/10281168.html
https://zhuanlan.zhihu.com/p/39998137
https://blog.csdn.net/qq_36303853/article/details/140882638
https://cloud.baidu.com/article/3407286
https://www.cnblogs.com/flamesky/p/18168065
https://wuzhiwei.net/unity-settings-optimization/
https://zhuanlan.zhihu.com/p/343074156
https://docs.unity.cn/cn/2019.2/Manual/OptimizingGraphicsPerformance.html
https://blog.csdn.net/qq_35864875/article/details/136539404
https://zhuanlan.zhihu.com/p/382656748
https://blog.uwa4d.com/archives/UWA_ReportModule6.html
https://www.cnblogs.com/uwatech/p/16405795.html
https://zhuanlan.zhihu.com/p/371159292
https://segmentfault.com/a/1190000043970787
https://www.cnblogs.com/flamesky/p/18146594
https://docs.unity.cn/cn/2019.4/Manual/Profiler.html
4.GPU占用率
重点检测:
-
drawcall耗时
-
shader的复杂度(包括纹理采样)
-
overdraw情况
【参考阅读】
https://www.nextmodel.cn/knowledges/video-tutorials/15658/
https://zhuanlan.zhihu.com/p/47056964
https://docs.unity.cn/cn/2021.2/Manual/OptimizingGraphicsPerformance.html
https://developer.unity.cn/projects/6409ebf8edbc2a6b5d462313
https://blog.csdn.net/qq_33060405/article/details/144315186
5.内存
需要考察:
-
资源冗余;
-
资源拷贝份数;
-
内存泄漏;
【参考阅读】
https://unity.com/cn/how-to/use-memory-profiling-unity
https://developer.unity.cn/projects/60e2a5f9edbc2a04cfc5e341
https://zhuanlan.zhihu.com/p/6775481769
https://blog.csdn.net/f402455894/article/details/120309344
https://blog.csdn.net/weixin_53501436/article/details/132670960
https://segmentfault.com/a/1190000019844821
https://blog.csdn.net/weixin_42186870/article/details/136148421
https://blog.csdn.net/lejian/article/details/128989139
https://blog.csdn.net/ellis1970/article/details/143378783
https://www.cnblogs.com/weigangblog/p/18201401
https://www.cnblogs.com/jiaxinli/p/12333014.html
https://wetest.qq.com/labs/315
https://blog.csdn.net/qq_36303853/article/details/140882638
6.发热和耗电量
Unity3D发热和耗电是一个系统工程,需要从帧率、CPU、GPU、内存等多方面考虑。
-
降低帧率
-
减少不必要的计算
-
优化事件轮询机制
-
减少渲染
-
减少drawcall
-
优化阴影计算
7.流量优化
-
数据序列化(Protobuf等)以及压缩(Gzip等)
-
降低字段精度(float使用float16,2D游戏只传输xy坐标)
-
使用差分同步(只发送变化部分)
-
减少网络数据传输频率(减少不必要的请求)
-
选用合适的网络协议(TCP或者UDP)
【参考阅读】
https://blog.csdn.net/luoyikun/article/details/121687973
https://wenku.csdn.net/column/1cvtkw8dcv
https://wenku.csdn.net/column/6waef4v63n
https://www.cnblogs.com/zafu/p/18639883
https://zhuanlan.zhihu.com/p/41670260