当前位置:   article > 正文

Unity性能分析工具合集(Profile Analyzer,Memory Profiler,UPR,UWA)

profile analyzer

Profile Analyzer

该工具可以汇总多帧 Profiler 数据,由用户来挑选出那些问题较大的帧。如果你想了解项目更改后 Profiler 的相应改变,可使用 Compare 视图分别加载和比较两个数据集,即比较两次多帧分析数据扫描,从而完成测试与优化。Profile Analyzer 可在 Unity Package Manager 中下载。
Windows-> Package Manager
在这里插入图片描述
一、使用
打开profiler,定位到某一帧,在Profile Analyzer中Pull Data
单一视图:分析CPU数据并可视化帧、线程和标记的数量,包括这些数据的最小值、最大值、中位数、平均数和上下四分位数,并提供返回Profiler窗口的链接,以找到数据出现的帧。帧数,线程和标记的时间分布情况也可以通过直方图和箱形图的形式呈现,可视化随时间变化的行为。
在这里插入图片描述

比较视图:两个帧数据集对比,以二个不同的颜色显示。不同数据集的区别会可视化在有序表格中,我们也可以在直方图和箱形图看到分布情况的区别,二个数据集可以显示代码或数据变更,项目设置改动及Unity版本升级的前后变化情况。
在这里插入图片描述

Filter面板可以过滤信息,匹配部分名称、运行线程、特定栈等级来限制使用的标记。除了根据特定名称匹配来筛选,也可以选择根据名称排除某标记组,以去除与统计结果不相关或无法有效反映标记组视图的标记,也可以通过使用窗口顶部的帧控制来选择出一部分帧。
在这里插入图片描述

Top 10 markets on median frames消耗最高的十个函数
在这里插入图片描述

Marker Comparison for currently selectes range作用同profiler的hierachy面板
选中帧后可以查看对比信息
在这里插入图片描述

Export可以将Marker Comparison for currently selectes range的数据以csv文件形式导出
在这里插入图片描述

MemoryProfiler

安装
windows->package manager->advanced->show preview package->memory profiler
一、简介
Memory Profiler允许分析项目的内存使用情况,以查找泄漏和碎片。内存泄漏可能发生在分配内存时,但在不再需要内存后未进行处理。随着内存耗尽,程序性能会恶化,最终导致程序(甚至主机设备)崩溃。当内存分配在许多小块中,而不是更少的大型连续块时,它被称为内存碎片。这将导致分配块之间的未分配内存小范围变得不可用
Memory Profiler是审核项目的内存使用情况的好方法。 您不仅可以查看消耗最大内存的内容,还可以查看项目使用或滥用内存的方式。 内存泄漏和碎片是影响项目性能的两个最常见的问题,并且Memory Profiler使解决这些问题变得容易
二、使用
运行项目,打开MemoryProfiler,点击capture捕获当前的内存配置文件,然后open,查看文件
在这里插入图片描述

1.Tree Map
在这里插入图片描述

图中的每一个大的色块是一种内存类型,例如最下面一块项目里占用资源最多的是shader,点击shader之后,可以显示该类别的所有成员元素及其各自的内存占用量

2.Memory Map
在这里插入图片描述

以不同的颜色显示内存布局代表不同类型的内存

UPR

为了获得更加精准的分析数据,UPR通过Unity Profiler,直接收集运行在目标硬件上的测试包所产生的分析数据。同时,相比较于集成在Unity Editor中的Unity Profiler,UPR能过更直观的方式,提供了更多的比较维度和追踪角度,展示了更多的内容,方便测试和开发人员更快的定位性能瓶颈。
Unity资源监测,快速资源扫描,可用于Asset Bundle冗余检测;基于Project Auditor的检测规则,通过对代码进行静态扫描和解析,分析Unity脚本程序中特有的性能相关的问题隐患。
UPR Desktop集成了Memory Profiler,RenderDoc,还可以监控Lua VM的CPU和内存使用情况。
一、使用(PC端)
在官网下载UPR包,导入unity,项目包名要与unity player setting一致
在这里插入图片描述

网页会生成一个ProjectId
打开Unity,Tools->UPRTools输入ProjectId
在这里插入图片描述

打包项目,创建新测试
在这里插入图片描述

运行项目,UPR生成检测报告
二、测试报告(Unity官方测试项目)
在这里插入图片描述

报告给出了各个指标的检测结果,推荐值,以及优化建议
例如:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

比较有亮点的地方还是区间报告这一块,可以通过拖拉下面的时间轴,具体定位到某些位置,查看相应位置中的性能损耗。相当于就是局部数据的收集,这样我只要测试一次生成一份报告,还可以获得每个场景的总体评价。
在这里插入图片描述
在这里插入图片描述

还可以查看内存使用情况
在这里插入图片描述

这个界面跟Unity自带的Profiler差不多
在这里插入图片描述

根据优化建议优化后重新测试,各项指标都已达标:
在这里插入图片描述

UWA

UWA GOT全程Game Optimization Toolkit,既能在本地直接进行真机测试,也支持在Unity Editor中搭建本地服务器来接收和分析性能数据。
一、使用
将UWA_GOT中的unitypackage导入
在这里插入图片描述

在Editor中将UWA/Prefabs文件夹下的UWA_Android.prefab文件拖入到项目的场景中
在这里插入图片描述

当Game视图出现以下UI界面时则说明UWA插件已经集成到项目中
在这里插入图片描述

点击Tools->UWA->SDK Integration,点击Auto Config一键设置
在这里插入图片描述

点击build here生成APK文件,即可进行真机测试,打开app,界面右上角选择Local Mode,选择测试类型(Overview、Mono、Asset),点击编辑器菜单栏中的UWA->Local Server选项,点击WIFI开启本地服务器。
在测试手机上安装UWA文件夹下的UWATool.apk文件并打开,输入Local Server的IP地址,点击Try Connect,原点变绿则连接服务器成功。
在这里插入图片描述

点击Upload Data,即可查看该手机上的所有测试数据,点击submit传输数据,,可在Local server上选择想查看的性能报告。

二、功能
1.Performance Overview
主要包括逻辑代码的CPU开销以及硬件设备等具体信息
CPU耗时分析视图:
在这里插入图片描述

也可以查看具体的逻辑代码开销:
在这里插入图片描述

在Mode中选择Hardware,可以查看项目运行时的硬件设备运行信息,主要包括硬件设备的内存信息
在这里插入图片描述

FPS统计:
在这里插入图片描述

MonoHeap:Mono堆内存总量统计,包括使用的和未使用的:
在这里插入图片描述

2.Mono堆内存分析
Mode选择Total,查看每个函数的总体堆内存分配情况:
在这里插入图片描述

Mode选择Persistent,可以查看每个函数在Mono中的真实驻留情况,以柱状图形式显示
在这里插入图片描述

选择任意两个柱状图,可以比较两次堆内存统计的差异,在Diff Mode中选择ON开启该功能
在这里插入图片描述

3.Assets运行时资源
查看资源使用情况,也可以查看某一帧
在这里插入图片描述

资源泄露分析,比较任意两帧的资源变化情况
在这里插入图片描述

资源冗余分析,资源数据展示界面中Max Count值(某一资源在某一帧中的最大资源使用数量)大于1的资源存在冗余问题的风险较高
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/101266
推荐阅读
相关标签
  

闽ICP备14008679号