• Unity Profiler 详细解析(一)


    Overview:

    . Profiler简介
    . Profiler各模块介绍
    . 各平台下Profiler的使用
    . 基于Profiler的优化定位
    . Profiler的主要参数详解
    . Profiler案例

    Profiler简介

    Profiler 是Unity中分析性能开销的工具
    • 各种开销一览无遗
    • 可跨平台使用(Web、PC、iOS、Android、WP)
    • 只有Unity Pro版本才开启该功能

    Profiler各模块介绍

    Profiler 包含6块内容的分析
    • CPU Usage
    • GPU Usage
    • Memory
    • Rendering
    • Audio
    • Physics

    • Unity 4.1 版更新内容
    • 提供更细节的Memory分析
    • 可通过IP地址来监视游戏的运行状况
    • Unity 4.2 版更新内容
    • 对象引用关系的显示

    Profiler各模块介绍

    *********************CPU Usage********************

    1. 主要函数调用的CPU时间开销 : (1)

    1.1.最耗时的操作会显示在Hierarchy面板的最上方 (2)

    2. Mono分配内存的情况 :

    2. 1. 在GC Alloc栏 (3)

    3. Profiler可以自定义需要统计的代码块

    3.1. 使用Profiler.BeginSample 和 Profiler.EndSample

    4. Deep Profiling

    4.1 同样使用之前的代码作为例子,在开启Deep Profiling后Profiler里的内容变得更为详细

    *********************GPU Usage********************

    1. 统计Drawcall的数量及耗费时间

    2. Profiler中Drawcall是广义上的Drawcall,包含:

    2. 1.GPU Stage切换
    2. 2. Clear操作
    2. 3.将顶点数据传输到GPU的开销
    2. 4. 绘制调用(狭义上的Drawcall)
    2. 5. Rendering模块和Game Statistics里统计的是这种Drawcall

    3. Memory Profiler

    3.1 查看内存使用细节
    3.1.1 点击 可看各种资源内存占用的情况
    31.2 点击后,获得当前内存情况。
    3.2 内存引用关系图
    3.2.1 可以观察到一个对象在哪里被引用,利于检测内存泄露

    各平台下Profiler的使用

    *********************Editor*******************

    1. 在Window/Profiler菜单下可打开Profiler窗口

    2. 如果在编辑器下运行游戏,可直接看到Profiler信息

    3. 一些常用的操作

    3.1Recored 记录或暂停
    3.2 Deep Profile 深度Profiling,分析更多细节
    3.3Profile Editor 是否记录Editor相关的开销
    3.4Active Profiler 激活指定的目标进行Profiling
    3.5Clear 清空已有的Profiler信息
    3.6Frame 帧

    *********************针对发布的程序做Profiling*******************

    1. 勾选”Development Build”和”Autoconnect Profiler”选项

    2.如果发布的程序在本机上执行,Profiler会自动连接;

    3.如果在其他机器上执行,需要在Active Profiler处输入IP进行连接。

    4. Profiler连接目标平台所使用的端口

    • MulticastPort : 54998
    • ListenPorts : 55000 - 55511
    • Multicast(unittests) : 55512 - 56023

    5. IOS/Android设备

    • 在Unity的Building Setting中勾选Autoconnect Profiler及Development Build
    • 发布游戏到目标设备
    • 连接目标设备到Wifi网络,需要和运行Editor的PC在一个Wifi网段
    • 运行设备上的游戏
    • 在Editor的Profiler(Active Profiler)里输入设备的IP,进行远程连接
    • 连接上后即可在Editor的Profiler窗口中查看Profiling的信息

    *************在各个平台上做Profiling的注意事项**************

    1. 做Profiling时需要应用程序获得焦点

    2. 如果自动连接不生效,请尝试手动设置IP连接,使用Active Profiler

    3. 发布时勾上Development Build和Autoconnect Profiler


    基于Profiler的优化定位

    1. Pareto Analysis 帕累托分析法

    1.1 20%的函数通常导致了 的性能问题

    1.2 使用编辑器 来得到最有问题的函数调用,并且在第一时间优化它们

    2. Profiler.BeginSample()/Profiler.EndSample()

    2.1更加清楚地分析函数中的各个部分

    3. Debug.Log

    3.1 Debug.Log("Hello"); //输出字符串到控制台

    3.1 Debug.Log("Hello",gameObject); //关联对象gameobject

  • 相关阅读:
    Lua 协程
    餐厅灭火系统市场现状及未来发展趋势分析
    Day35 移动端测试(下)
    算法训练day37|贪心算法 part06(LeetCode738.单调递增的数字)
    【视频】马尔可夫链原理可视化解释与R语言区制转换MRS实例|数据分享
    HTML5笔记
    Docker ENV 与 ARG 详解
    Github 2024-03-12开源项目日报 Top10
    常见问题小结
    Redis
  • 原文地址:https://blog.csdn.net/m0_69824302/article/details/133964311