Optimizing Mobile Applications

4人阅读 评论(0) 收藏 举报
分类:

目标:了解&分析移动性能,减少内存消耗并缩短帧时间,以尽可能的在移动设备上让游戏顺利运行。

--------------------------------------------

1.用Instruments检测CPU time


通常我们希望自己的游戏运行的更快,占用资源更小。要做到这点首先需要知道运行时的状况,比如哪些步骤/数据 消耗过高。

检测这个流程的工具如下:



首先是Instruments:


因为IL2CPP?,Instruments可以针对Unity程序提供毫秒级的分析数据,还可以把一些在Unity Profiler看不到的数据,比如程序的startup time等显示。

引导博客:怎样运行Instruments


  • Instruments可以显示Unity程序运行的CPU Time tree。比如下图红色框标出来的就是startup。



在startup时,我们的行为在两处可能造成影响:

1.PlayerLoadGlobalManagers那一行,表示在加载singletons(单例)和registries(注册),如果在一开始有任何的Resource Load(以const),则在此处起作用。

2.第一个场景里gameobject上挂的脚本里,如果在其AWAKE方法里有运行昂贵的代码,也会在此有影响(半天加载不出来)。如果有这种情况,考虑在程序其他的生命周期里调用(applications lifecycle)。


Instruments也可以看running 时的汇总性能数据,多帧或单帧的都可以,比如下图playerloop function,是Unity 的主循环代码,每帧循环一次。



因为我们做的是video game,所以渲染首先进行,如果在脚本里有任何的渲染callback将在PlayerRender有影响。

还有BaseBehaviourManager::CommonUpdate处理FixUpdate(),Update()以及LateUpdate()的回调(callback)。

UI::CanvasManager(several methods)表示如果有任何使用Unity Canvas(包括Unity UI系统)渲染,则在此处有影响。

DelayedCallManager::Update 表示一些多帧运行的地方,比如Coroutines。

PhysicsManager::FixedUpdate 表示所有的物理运行,比如OnTriggerEnter等则在此处有影响。(如果是2D系统,则对应的是Physics2DManager)




  • 当然我们要做的最重要的是监控我们的scripts的执行信息,比如下面就是Unity Standard Assets在Ipad上的执行(transpiled)截图。



这里值得看的是EventSystem_Update,可以看到这是Scene最昂贵的执行(几乎是其他执行的百倍)。那它执行的是什么呢,点开之后我们会跟踪到CPU time主要耗在每帧通过raycasting定位鼠标的位置。但是一般我们在Ipad上没有鼠标,所以这些CPU time就是完全的无意义消耗。


  • 接着看Coroutine



ScriptingInvocation::Invoke下可以看到一个奇怪的方法:U3CDoBobCycle。这是该协程的名字,这是用来在每帧适应camera的位置。按说这个协程每一帧都应在DelayedCallManager下,但事实并非如此。

要解释这个就要说明Coroutine的运行模式:



可以看到Coroutine被分成两部分执行,所以追踪coroutine的执行情况要在不同部分查看。


Instruments还可以用来确定Unity在什么时候什么位置loading assets。

如果看到方法(method): VirtualRedirectTransfer,表示是Unity Serialization System把data转换为Object。

通常这发生在加载资源时,比如texture,a mono behavior等。在此例为Particle System。



所以如果你发现如果程序在VirtualRedirectTransfer时很卡,那就需要预加载资源。比如通过assets pool,或者异步加载资源(loading asynchronous)。

有时候也会在很内层的地方发现该method (calls to clone object),这时候表示把data从source object 转移(transfer)到target object上。


2.通过Memory Profiler检测内存情况

在5.3版本以上可以使用。

怎样使用Profiler













查看评论

High Performance iOS Apps- Optimize Your Code for Better Apps 无水印pdf

  • 2017年09月25日 16:28
  • 39.22MB
  • 下载

Building Web and Mobile ArcGIS Server Applications with JavaScript(2nd) zip

  • 2017年10月31日 22:02
  • 212KB
  • 下载

building-mobile-applications-with-tensorflow--Pete Warden

  • 2017年09月26日 19:23
  • 2.89MB
  • 下载

Oracle Mobile Web Application (MWA) 学习小结(1)

Oracle Mobile Supply Chain Application (MSCA) 是Oracle供应链管理解决方案的一 部分,让用户能够移动操作。使用手持式射频(RF)设备和叉车安装射频扫描...
  • zhao__fang
  • zhao__fang
  • 2017-04-30 22:39:35
  • 263

Mobile Applications Development with Android: Technologies and Algorithms

  • 2017年02月22日 04:30
  • 7.24MB
  • 下载

Mobile.Cloud.Computing.Architectures.Algorithms.and.Applications

  • 2016年01月15日 14:49
  • 13.36MB
  • 下载

Processing for Android Create Mobile, Sensor-Aware, and VR Applications epub

  • 2017年11月29日 18:54
  • 4.79MB
  • 下载

Ionic: Advanced HTML5 Hybrid Mobile App Framework

The bond between HTML5 and Native has arrived. Ionic is a beautiful front-end framework for develop...
  • Mr_Data_Mining
  • Mr_Data_Mining
  • 2013-12-20 10:10:48
  • 3155

A DBA’s take on MSCA (Mobile supply chain applications)

A DBA’s take on MSCA (Mobile supply chain applications) What is MSCA? MSCA is Oracle’s take on mo...
  • pan_tian
  • pan_tian
  • 2012-07-15 17:54:35
  • 3635

IOS 开发 有关iPhone程序的安装目录-UUID 唯一标识

不同的程序,在模拟器以及真机上的路径。 注意,32位的那个UUID,在任何一个模拟器程序,或者真机上,都是不同的。 没安装一个iPhone程序到手机上,都会在/var/mobile/Applica...
  • diyagoanyhacker
  • diyagoanyhacker
  • 2011-08-08 16:17:11
  • 5062
    个人资料
    持之以恒
    等级:
    访问量: 2万+
    积分: 605
    排名: 8万+
    最新评论