UE性能优化CPU篇章
UE性能优化CPU篇章
瓶颈定位
主要定位出性能开销的问题,确定接下来的优化方向,以及后续的细致的分析的具体的优化工作。
每一帧来说,这三者的执行顺序依次为:Game Thread → Draw Thread → GPU Thread,一帧的总耗时,取决于三者中开销最严重、即耗时最长的线程。
手机上的性能问题主要是由这七部分构成:CPU逻辑,CPU渲染,图形API(提交),GPU渲染,内存,带宽,加载时间。
准备工作
PC
1.关闭垂直同步
1 | r.VSync 0 |
2.项目设置中关闭平滑帧
1 | ProjectSettings->Engine->General Settings->SmoothFrameRate(平滑帧率) |
3.关闭实时
4.在standalone运行
5.最小化Editor
Android
当运行在手机时,需要打包合适的版本并在实际的运行平台上测试,以保证结果的准确性。
真机调试“使用AGDE在Visual Studio中调试Android项目”
常用命令行
命令 | 描述 |
---|---|
Stat FPS | 显示帧率(Hz) |
Stat Unit | 显示Frame,Game,Draw,GPU,Draws,Prims |
r.RHI | 显示三角形面数,绘制调用次数 |
stat sceneRendering | 显示场景渲染信息,模型Drawcalls等 |
r.ScreenPercentage | 模型100,调整该数值看GPU变化,定位瓶颈是否在GPU |
stat game | 显示tick的耗时情况 |
性能分析工具
Windows
CPU : Insight sessionfront visulstudio ProcessExplorer perfDog adk windgb xdb64 ida framepro tracy
Mem : llm memreport visulstudio RAMMap ADK windgb ida tracy
GPU : GPA Nsight renderdoc
Android
cpu : insight sessionfront androidstudio SimplePerf systrace perfetto arm-streamline ida tracy
mem : llm memreport androidstudio perfetto ida tracy
gpu : arm-streamline renderdoc Snapdragon Profiler
iOS
cpu : xcode 套件 tracy
mem : xcode 套件 tracy
gpu : xcode 套件
CPU性能优化
1.GameThread
Game Thread 造成的开销,基本可以归因于 C++ ,蓝图和脚本(Lua)的逻辑处理,瓶颈常见于Tick 和代价复杂的逻辑实现。
a.Tick
控制台命令
1 | stat game 查看Tick的耗时情况 |
Tick优化
1 | 1.timelines |
性能消耗大的函数
1 | GetAllActorsOfClass |
动画蓝图中多使用带有闪电标识的动画节点
b.复杂逻辑
需要借助 Unreal Frontend Profiler / Unreal Insights 等工具对游戏逻辑中开销较大的代码进行定位
Unreal Frontend Profiler工具
1 | Stat StartFile --开始录制数据 |
录制文件正常情况会保存在项目路径/Saved/Profiling/UnrealStats/ 目录下,在windows(窗口)->developer Tools(开发者工具)->Session Frontend(会话前端)中打开
Unreal Insights 工具
Unreal Insights默认只能在非Shipping版本中使用,可以修改。
官网教程:UnrealInsights(UE4的文档最近抽抽了,打不开,链接是UE5的)
知乎UE4 Unreal Insights基本使用–南山搬山道人
二进制引擎UnrealInsights位置
1 | Engine\Binaries[Platform]\UnrealInsights[.exe] |
从源码构建
- 使用vs,rider等IDE打开Programs文件夹中的UnrealInsights目标文件。
- 在命令提示符中 。在您的引擎安装文件夹中使用虚幻构建工具构建Unreal Insights:
在Windows上:
1 | Engine/Build/BatchFiles/RunUBT.bat UnrealInsights Win64 Development |
在Linux或者Mac上:
1 | ./Engine/Build/BatchFiles/RunUBT.sh UnrealInsights [Linux|Mac] Development |
简单的使用方法
启动命令参数添加-trace或者命令行输入trace.start trace.stop,生成.utrace文件,拖入文件到unreal instight打开查看性能。
例如移动包或者编辑器启动的游戏等可以打开命令窗口输入:
trace.start frame,cpu,gpu | trace.stop 开始停止数据追踪
生成的.utrace
文件会出现在项目的默认剖析目录中(…/Saved/Profiling
)
数据查看
可以将一个.utrace
文件从文件夹拖放到Unreal Insights窗口上,即可启动分析。