【unity资源加载与优化章】Profiler优化工具详解

在这里插入图片描述


👨‍💻个人主页:@元宇宙-秩沅

👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅!

👨‍💻 本文由 秩沅 原创

👨‍💻 收录于专栏:Unity性能章

🅰️



文章目录

    • 🅰️
    • 前言
    • 🎶(==1==)基础知识
    • 🎶(==2==)使用操作——观察
      • 示例
      • ⭕CPU Usage CPU分析器
        • Hierarchy层级结构
        • Timeline时间线性图
      • ⭕GPU Usage GPU分析器
        • 辨别游戏的问题是CPU密集还是GPU密集


前言

Profiler是Unity中的一种性能分析工具,用于帮助开发者识别和解决应用程序中的性能问题。它可以提供详细的统计信息,如帧率、CPU和GPU使用率、内存占用等。Profiler可以帮助开发者找出应用程序中的性能瓶颈,并提供一些优化建议,以提高应用程序的性能和响应能力。使用Profiler,开发者可以监视应用程序在不同时间段的性能表现,并进行性能比较,以了解哪部分代码或功能对性能有影响,从而进行优化和改进。

  • Profiler工具可以查看每一帧游戏的渲染,加载和内存,可精确到耗时资源本身——故此我们了解它的目的是为了跟踪导致性能问题产生的源头
    在这里插入图片描述

🎶(1基础知识


  • 什么是FPS

FPS(英文全称:frames per second)是指每秒帧数,也被称为帧率。在Unity中,FPS帧率是指游戏画面每秒被更新的次数。常见的FPS帧率是30、60或120。较高的FPS帧率可以提供更流畅的游戏画面,但也需要更强的硬件性能来支持。

从60到50FPS呈现出的是额外3.3毫秒的运行时间,但是从30到20FPS呈现出的是额外的16.6毫秒的运行时间。故此帧率越高运行速度越快

  • 什么是ms

在Unity中,"ms"是指毫秒(milliseconds)。它是一种时间单位,用于测量一段代码的执行时间或者游戏中的帧率。在游戏开发中,通常会使用ms来衡量游戏的性能和优化。 例如,帧时间表示每帧所需的毫秒数,较低的帧时间意味着游戏运行更流畅。

  • 什么是帧时间

在Unity中,帧时间(Frame Time)是指每一帧的渲染时间,即游戏引擎需要花费多少时间来完成一帧的渲染工作。帧时间通常用毫秒(ms)来表示。
帧时间与游戏的帧率(FPS)有密切的关联。帧率是指每秒渲染的帧数,而帧时间则表示完成一帧渲染所花费的时间。 两者之间有一个简单的关系:帧时间 = 1000 / 帧率。例如,如果游戏的帧率是60FPS,则帧时间应该是16.67ms。
较低的帧时间意味着游戏的性能更好,因为引擎可以更快地渲染每一帧。常见的目标是保持帧时间在16.67ms以下,以确保游戏的流畅性。如果帧时间超过这个值,可能会出现卡顿、掉帧等性能问题,需要进行优化和调整。
🅰️


🎶(2使用操作——观察


使用Profiler窗口是为了观察游戏的性能问题,而这篇文章的目的是为了帮助大家了解Profiler窗口

  • 在开发过程中,我们可以通过编辑模式的状态下按住ctrl+7 打开Profiler性能分析窗口但是,此时的分析结果会有误差
    要获得更好的性能分析结果,应该始终在目标设备上对应用程序进行性能分析(打包测试)操作如下:

在这里插入图片描述


图片来源于官方文档:入口


在这里插入图片描述

  • Building setting -> 勾选Development - Autoconnect Profiler - Deep Profiling Support

在这里插入图片描述

  • 移动设备性能测试请见:入口

示例

示例如下:(随意打包出一个杂乱未进行优化的项目)

在这里插入图片描述

  • 以上黄色的是 VSync(垂直同步)区域,一般在CPU视图中选择隐藏,在Hierarchy视图中选择忽视对应的层级为

垂直同步(Vertical Sync)也被称为VSync,是一种在图形渲染中同步帧速率的技术。它工作原理是将显示器的刷新率与游戏或应用程序的帧速率进行同步,以避免画面撕裂(screen tearing)的现象。
在没有垂直同步的情况下,当显示器的刷新率高于游戏或应用程序的帧速率时,画面可能会出现撕裂的效果。这是因为显示器在渲染画面时,可能会在两个或多个帧之间切换,导致画面的不连贯。
通过启用垂直同步,游戏或应用程序的帧速率将被限制为与显示器刷新率相匹配。这样一来,每个新帧将在显示器开始下一次刷新之前被渲染完毕,从而产生更平滑、连贯的画面效果。
然而,垂直同步可能会导致一些问题。当帧速率无法达到显示器的刷新率时,可能会出现画面卡顿的情况。此外,对于竞技游戏等需要更高帧速率的应用场景,可能会关闭垂直同步以追求更低的延迟

⭕CPU Usage CPU分析器


  • CPU完成每帧所花费的时间

在这里插入图片描述

  • 据上图分析,此时帧时间已超过流畅性值(16.67ms)
  • 帧率FPS也在15,这说明画面极其卡顿

Hierarchy层级结构

  • 打开层级我们可以看到
    各个部分对于CPU的内存占用率
    在这里插入图片描述
TotalSelfCallsGC AllocTime msSelf ms
占用时间自身代码运行的时间调用次数GC内存此模块运行的时间自身代码占用的时间

注: GC分配的内存Struct和Class一次性分配的内存别超过2KB

GC的内存分配:一次性不得超过2KB,每帧都具有20B以上的内存分配

在这里插入图片描述


Timeline时间线性图

CPU 任务执行的顺序和对应线程负责任务

可在其中查看线程情况
在这里插入图片描述


⭕GPU Usage GPU分析器


辨别游戏的问题是CPU密集还是GPU密集

一般情况下,GUP分析器是默认未激活状态的,需要手动开启(但是开启后会额外增加开销)
如下图所示,点击勾选 GPU Usage的选项。开启GPU

在这里插入图片描述

  • 此时可以通过比对CPU 和 GPU 的数据 来判断 游戏是CPU密集还是GPU密集
    在这里插入图片描述

⭐【Unityc#专题篇】之c#进阶篇】

⭐【Unityc#专题篇】之c#核心篇】

⭐【Unityc#专题篇】之c#基础篇】

⭐【Unity-c#专题篇】之c#入门篇】

【Unityc#专题篇】—进阶章题单实践练习

⭐【Unityc#专题篇】—基础章题单实践练习

【Unityc#专题篇】—核心章题单实践练习


你们的点赞👍 收藏⭐ 留言📝 关注✅是我持续创作,输出优质内容的最大动力!


在这里插入图片描述


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/536514.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

三星泄露微软 Copilot 新功能:用自然语言操控各种功能

3 月 11 日消息,微软计划本月晚些时候发布新款 Surface 电脑和适用于 Windows 11 的 Copilot 新功能,但三星似乎等不及了,在其即将推出的 Galaxy Book4 系列产品宣传材料中泄露了一些即将到来的 Copilot 功能。 三星官网上发布的图片证实了此…

ubuntu20.04上获取Livox Avia雷达点云数据

若拿到手的Livox Avia激光雷达不知道它的ip信息,可以在官网上LiDAR Sensors - Livox下载上位机软件Livox Viewer,查看IP,下载window版本就可以。雷达通过网线连上电脑后,该软件就可以自动识别出来。按照下图步骤,就可以…

学习vue3第五节(reactive 及其相关)

1、定义 reactive() 创建一个响应式代理对象,不同于ref()可以创建任意类型的数据,而reactive()只能是对象,会响应式的深层次解包任何属性,将其标注为响应式 响应式是基于ES6的proxy实现的代理对象,该proxy对象与原对象…

数据结构——二叉树的层序遍历

💞💞 前言 hello hello~ ,这里是大耳朵土土垚~💖💖 ,欢迎大家点赞🥳🥳关注💥💥收藏🌹🌹🌹 💥个人主页&#x…

vim相关命令

vim 三种工作模式:命令模式、文本模式、末行模式 命令模式:通过vi hello.c 命令进入i a o 、I A O、 s S 可以切换到文本模式 ,写完后保存退出 o光标 回到下一行O光标回到上一行s删除当前字母S删除一整行A回到该行末尾处a光标回到下一个输入…

使用html+css制作一个发光立方体特效

使用htmlcss制作一个发光立方体特效 <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>Documen…

AI日报:一个新的“科技超级周期”正在出现

文章目录 技术周期预测可连接设备 技术周期 未来学家艾米韦伯表示&#xff0c;人工智能和其他两种通用技术将迎来一个新的“技术超级周期”&#xff0c;预计将在经济中创造“实质性和持续性”的变化。 她在SXSW 2024上表示&#xff0c;过去的科技超级周期是由通用技术引发的&…

LNMP架构之web服务器实战

LNMP架构 1.nginx部署 systemctl disable --now keepalived.service 关闭keepalived服务&#xff0c;避免冲突 将下载好的nginx软件压缩包直接拖入mobaxterm目录即可 tar zxf nginx-1.23.3.tar.gz cd nginx-1.23.3/ yum install -y gcc pcre-devel openssl-devel #安装依…

Spring Cloud Alibaba微服务从入门到进阶(三)

Spring Cloud Alibaba是spring Cloud的子项目 Spring Cloud Alibaba的主要组件&#xff08;红框内是开源的&#xff09; Spring Cloud是快速构建分布式系统的工具集&#xff0c; Spring Cloud提供了很多分布式功能 Spring Cloud常用子项目 项目整合 Spring Cloud Alibaba …

Day39-2-Rsync企业级备份工具讲解

Day39-2-Rsync企业级备份工具讲解 1. 什么是rsync?2. 什么是全量和增量&#xff1f;3. 为什么要用rsync&#xff1f;4. rsync功能特性5. 增量复制原理6. rsync三种工作模式介绍6.1 本地&#xff08;local&#xff09;6.2 远程Shell模式6.2.1 远程Shell模式企业场景和实践&…

【STL】stack栈容器与list链表容器

1.栈stack 栈具有先进后出的特性&#xff0c;最先进入的数据压在最底下&#xff0c;最后出来 2.list链表容器 list链表容器是一种双向链表&#xff0c;两端都可插入与删除&#xff0c;是双向访问迭代器&#xff0c;与vertor随机访问迭代器有不同的区别 reverse&#xff08;&…

WPF实时时间显示demo(MVVM)

跟着b站的视频学习做一个界面,它里面的时间不能实时刷新,因此自己研究写一个,同时加深一下自己对MVVM的理解. 运行结果: 实现步骤: 1.界面 界面设计就是放置了一个TextBlock,它的text绑定了ViewModel层里面的公告属性CurrentTime. <Grid><TextBlock Text"{Bindi…