UWA性能报告精读

仿UWA对Unity项目进行性能分析<一>

最近在对项目的Unity部分进行性能分析,查找profiler的一些指标定义时,恰巧搜到了UWA的博客,看了以后感觉受益颇多。尤其是最后一部分的案例分析,包含了性能分析的参数和指标,可以作为Unity部分性能测试的范本。

《六龙争霸》测评精讲这篇为例,从帧率(CPU性能)指标入手,分析了《六龙争霸》在渲染、内存、资源三大块的优化情况。

细读了一下整篇报告,发现除了texture纹理类型这块没有找到数据来源,猜测是通过解析资源的assetbundle,其余数据均来自Unity Profiler的日志数据,经过统计和二次计算。恰好手上有profiler的数据,所以准备依样画葫芦来做一个类似的报告,看看自己项目的性能与UWA认可的标准的差距。

本篇是第一篇,是对《<六龙争霸>测评精讲》的深入解读,整理一下各模块数据的来源,因此所有截图都来自此博客和网络,没有任何原创。

当然,懒如我,第二篇是什么时候,还不知道。

CPU性能

报告中CPU性能数据包括4个:

  • 总帧数
  • CPU耗时均值
  • CPU耗时>33ms帧占比(FPS<30)
  • CPU耗时>50ms帧占比(FPS<20)
《六龙争霸》CPU性能概览-三星S3(From Blog)

不难看出,其实只要对每帧的CPU耗时进行不同维度的统计计算,即可得到上述信息。
CPU耗时这个指标,使用过Unity Profiler的不会陌生,是Profiler界面的第一栏。点击选中某帧后,会在下面窗口显示该帧生成时各函数的耗时,如下图所示。

Unity Profiler - CPU Profiler(From Unity Manual)

列表右上角的CPU指标即为该帧生成时CPU耗时。

渲染模块

《六龙争霸》渲染性能-三星S3(From Blog)

渲染模块的参数同样是4个:

  • max Drawcall
  • max Triangles
  • avarage 半透明渲染CPU耗时
  • avarage 不透明渲染CPU耗时

折线图是每一帧的半透明和不透明渲染的CPU耗时,也就是计算后两个指标的具体数值。
同样的,CPU耗时依然来自Profiler的CPU Usage部分。
半透明渲染函数:Camera.Render/Drawing/Render.TransparentGeometry
不透明渲染函数:Camera.Render/Drawing/Render.OpaqueGeometry

DrawCalls和Triangles是渲染参数,来自Profiler的Rendering部分。

RenderProfiler.png

物理模块

《六龙争霸》物理模块性能 - 三星S3 (From Blog)

包括图中4个指标和文中提到的Rigidbodies,物理模块有5个指标

  • avarage 物理计算CPU耗时
  • max Number of Contacts
  • max Static Colliders
  • max Dynamic Colliders
  • Active Rigidbodies

CPU耗时同样来自于CPU Usage
函数名为:Physics2D.FixedUpdate/Physics2D.Callbacks/Physics2D.Simulate
不过,这个需要确认,我们项目用不到物理模块,我没有找到博客图中所示的Physics.Simulate不代表没有此函数,所以先定位到这个Physics2D。
剩余指标来自

Unity Manual - Physics Profiler

动画模块

由于我所在项目无使用,所以简单提一下。
CPU耗时同上,函数为:

  • Animators.Update
  • Animation.Update(这个也没有找到)
  • MeshSkinning.Update

Animation Clips在Memory Profiler窗口中可以间接获得。图见下章

内存模块

Unity的内存分为两行数据,一行是Reserved, 一行是Used,如下图所示的Memory Profiler。

Unity Manual - Memory Profiler

Used和Reserved的差值则为用于该部分的空闲内存,这与Unity的内存管理机制有关。当我们需要评估应用所占内存大小的时候,需要用到Reseved的值;需要评估代码的内存管理时,数值则需要以Used为准。两者的差值代表着代码对内存管理的优劣,由于Unity不会将申请的内存还给系统,所以需要更为合理的内存管理机制来降低空闲内存的大小。

《六龙争霸》内存模块性能分析 - 三星S3

参考博客中的数值,可以看到需要关注的6个内存数值为

  • Reserved Total
  • Used Total
  • Reserved Unity
  • Used Unity
  • Reserved GFX
  • Reserved Mono

空闲内存 =
(Reserved Total - Used Total) - (Reserved Unity - Used Unity)

资源模块

报告中的资源模块包括四种类型的资源:

  • Textures 贴图
  • Meshes 网格
  • Animation Clips 动画
  • Audio Clips 声音

其中共同的性能指标为

  • 数量峰值
  • 内存峰值

这些都可以在Memory Profiler中获取到。

GC调用

Instantiate实例化这个没有找到,因此只对GC的部分做统计
GC的数据同样在CPU Usage的表格部分。会通过如下类似的方式进行调用:

BehaviourUpdate/BehaviourUpdate/----.Update()/GC.Collect|0 B|0.97|0.97

意味着在该帧调用了GC,引起GC调用的是BehaviourUpdate/BehaviourUpdate/----.Update()函数,该次GC耗时为0.97ms

粒子系统

CPU耗时,同样在CPU Usage的表格部分。
函数为:ParticleSystem.Update

参考资源

  1. 《六龙争霸》测评精讲
  2. Unity Manual - Profiler
  3. Optimizing Graphics Performance
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 195,980评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,422评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,130评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,553评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,408评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,326评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,720评论 3 386
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,373评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,678评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,722评论 2 312
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,486评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,335评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,738评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,009评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,283评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,692评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,893评论 2 335

推荐阅读更多精彩内容