unity手游很卡 profiler怎么看

Unity5.3新Memory Profiler - 简书
Unity5.3新Memory Profiler
背景和概述
从Unity4.x到Unity5.2,Unity内置的Memory Profiler一直鸡肋,不能很容易地借此进行内存优化。从Unity5.3开始,Unity提供了一个新的Memory Profiler工具,能非常直观地辨别内存类别间的大小关系,且能找到精确的内存引用链条,故而可以很方便地进行内存优化。
使用新Memory Profiler的要求是Unity5.3及其以上、使用IL2CPP和构建时开启Development Build。
(从此,我们就不怕优化内存没有头绪了!!!)
旧Memory Profiler的问题
旧Memory Profiler
个人汇总旧Memory Profiler存在的问题如下:
不能直观地对比内存占用大小关系
旧Memory Profiler通过树状列表进行内存分类展现、每行旁边标上内存占用大小数字。但内存分析过程中,随着树深度的不断展开,人脑对数字的敏感会出现偏差,常会出现“绕晕”了的感觉。
内存引用链条不准确,形同虚设,但这对于内存优化来说又偏偏是至关重要的。
你给我标一个“ManagedStaticReferences”我又不知道它是啥?有何用???
你给我标一个“SceneObject”我又不知道它是啥?有何用???
不包括详细的Mono对象内存统计
目睹一个ManagedHeap.UsedSize几十M却又不知道里面到底包含了哪些我们写的C#/Mono对象,这种心情是忐忑的!
会错误地把Editor的内存也统计进来
简而言之,旧Memory Profiler的使用感觉是:“裤子都脱了,你就给我看这个?!”。
(写上面这些文字时勾起了曾经痛苦的内存分析回忆,所以心情激动了)
新Memory Profiler
新Memory Profiler
针对旧Memory Profiler的缺点,新Memory Profiler都进行了解决。
直观地对比内存大小关系
新Memory Profiler将所有内存对象都合理地排列在一个可缩放的矩形里,提供了异常直观的内存大小关系对比。
比如,我们运行时采用StringBuilder进行Unity日志的保存,以便于输出日志到本地。这时一个合理的担心是这个会不会对内存造成很大影响?
与其(合理地)担心一个保存日志字符串的内存占用
有了新排版的Memory Profiler,你只需鼠标滚轮一滚,就直观地知道原来你曾经的担心原来只是冰山一角了。
直观地立刻知道,倒不如先解决如何比它大得多的Lightmap内存占用
正确精确的内存引用链
当用户选择了任意一块内存,新Memory Profiler都能正确精确地显示其引用链。
正确精确的内存引用链
以上图为例,当用户选择了一张ENV10_hill02纹理,新Memory Profiler能正确精确地显示其直接引用ENV10_hill02这个Material和引用链,如图中的ENV10_hill03这个MeshRenderer是其引用根节点。
Mono对象内存统计
如下图,新Memory Profiler成功进行了Mono对象内存统计。
成功进行了Mono对象内存统计
(在没新的Memory Profiler之前要分析精确的Mono对象内存,则必须要替换其Mono运行时为一个特殊的、进行内存监控的Mono运行时,方能进行Mono对象内存统计。)
只会统计实际真机联调的内存
目前没发现Editor的内存有被新Memory Profiler统计进来。
新Memory Profiler的使用方法
使用新Memory Profiler的基础要求是
Unity5.3及其以上
使用IL2CPP,比如iOS平台
构建时开启Development Build
下面以对iOS程序进行Memory Profile为例,在OSX进行。
安装Unity5.3,并打开能正常编译通过的Unity项目工程
注意选择Scripting Backend是IL2CPP:Edit&ProjectSettings&Player&iOS&Scripting Backend&IL2CPP
开启Development Build构建
手机安装好ipa
在Unity的Bitbucket开源库里下载,并用Unity5.3打开该工程
手机USB连上电脑
打开传统Profiler,如下图进行选择,确保UnityEditor已正确选择并连上移动设备进行Profile
点击Window&MemoryProfiler,打开新Memory Profiler窗口
点击Take Snapshot
成功用新Memory Profiler截取内存分析
live learn and love3190人阅读
Unity(4)
unity提供了从脚本来控制性能分析器的类Profiler~
静态变量:
enableBinaryLog:假如设置为true,则会生成名字为&logFile&.data的文件,里面会存放大量的profile二进制数据,会变得相当大。一般和logFile一块使用。
enabled:使内建播放器可以记录分析的日志信息。
logFile:设置内建播放器的Profiler输出文件。
Profiler.logFile = &mylog.log&;
Profiler.enableBinaryLog =
Profiler.enabled =使用的时候顺序如上~
usedHeapSize:程序使用的堆的大小~
静态函数:
AddFramesFromFile:在Profiler窗口中显示文件中记录的profile数据。static void AddFramesFromFile(string file);
BeginSample:开始采样,可以带有一个自定义的标签.static void BeginSample(string name);
EndSample:结束采样,(BeginSample和EndSample可以匹配使用)static void EndSample();
GetMonoHeapSize:获取mono堆的大小,static uint GetMonoHeapSize();
GetMonoUsedSize:获取mono使用的内存的大小,static unitGetMonoUsedSize();
GetRuntimeMemorySize:获取运行时资源内存大小,主要用于mesh、texture、Audio、Animation等。static int GetRuntimeMemorySize(Object o);
BeginSample编译的时候总是会使用条件属性,因而当在非开发环境build部署时具有0耗费。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:46012次
排名:千里之外
原创:20篇
(5)(3)(1)(12)
(window.slotbydup = window.slotbydup || []).push({
id: '4740881',
container: s,
size: '200,200',
display: 'inlay-fix'程序写累了,就来玩玩酷跑小游戏吧,嘿嘿。
雨松MOMO送你一首歌曲,嘿嘿。
Unity3D研究院之获取某个方法执行的时间
Unity3D研究院之获取某个方法执行的时间
围观15631次
编辑日期: 字体:
我想在一帧内获取某个方法的总执行时间。开始想用Time.time减去之前保存的时间。但是发现在一帧内永远返回的是0,多帧的话可以,看来Time.time只会在每一帧赋值更新一次,所以一帧内的就取不到了。
然后查了一下c#有一个Stopwatch的类可以帮我们记录时间,使用起来也挺便利的。。
1234567891011121314151617181920212223242526272829303132333435
using UnityEngine;using System.Collections;using System.Diagnostics;&public class NewBehaviourScript : MonoBehaviour {& void Start () {
float t = Time.time;
TestMethod();
UnityEngine.Debug.Log(string.Format("total: {0} ms",Time.time - t));&&&
Stopwatch sw = new Stopwatch();
sw.Start();
TestMethod();
sw.Stop();
UnityEngine.Debug.Log(string.Format("total: {0} ms",sw.ElapsedMilliseconds));&&
Profiler.BeginSample("TestMethod");
TestMethod();
Profiler.EndSample(); }&& void TestMethod() {
for(int i =0; i & ; i++)
如下图所示,Stopwatch就可以正确的取到上一个方法所消耗的时间。如果想同时测试多个方法,可以多次调用 sw.Reset(); 然后sw.Stop取ElapsedMilliseconds毫秒数即可。
当然也可以用 Profiler.BeginSample 和 Profiler.EndSample 但是就是要打开Profiler界面找到那一帧就可以看了。
本文固定链接:
转载请注明:
雨松MOMO提醒您:亲,如果您觉得本文不错,快快将这篇文章分享出去吧 。另外请点击网站顶部彩色广告或者捐赠支持本站发展,谢谢!
作者:雨松MOMO
专注移动互联网,Unity3D游戏开发
如果您愿意花10块钱请我喝一杯咖啡的话,请用手机扫描二维码即可通过支付宝直接向我捐款哦。
您可能还会对这些文章感兴趣!为什么在手机上调试Unity,profiler上没任何显示? - 知乎3被浏览114分享邀请回答0添加评论分享收藏感谢收起

我要回帖

更多关于 unity profiler 真机 的文章

 

随机推荐