【移动应用开发技术】性能优化策略_第1页
【移动应用开发技术】性能优化策略_第2页
【移动应用开发技术】性能优化策略_第3页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

【移动应用开发技术】性能优化策略

性能问题的处理流程发现/重现问题利用工具剖析形成假设改进代码和设计在以上的四个步骤中循环反复,直到问题解决。Profile!不要猜!性能优化的主要策略:不要做无用功:不要在启动时花几百ms来做logging,不要为同样的数据做多次查询试图重用:对于创建过程昂贵的对象,要重用而不是重新创建TableView的cellDate/Number的formatter正则表达式SQLite语句使用更快的方式设计、编程:选择正确的集合对象和算法来进行编程、选择适合的数据存储格式(plist、SQLite)、优化SQLite查询语句事先做优化对于昂贵的计算,要进行事先计算。iCal中的重复事件,是预先计算出来的,并保存到数据库中。事先计算并缓存一些对象,可能会占用大量的内存。注意不要将这些对象声明为static并常驻内存。事后做优化:异步加载、懒加载为伸缩性而做优化:当数据有10条、100条、1000条甚至更多的时候,应用程序的性能不应该对应的呈数量级式的增长,否则无法使用。说起来惭愧,我真的很少遇到性能问题。以前假设中的性能问题,很多是根本不存在的。事前计划也杜绝了不了性能问题的产生,所以不如暂时忘记它吧。当然对于一些常识性的提高性能的设计,仍然是必须的。很多app的开发者都不重视app的启动速度,这对于碎片化使用情景的用户来说,简直是灾难。iOS应用的启动速度应用启动时,会播放一个放大的动画。iPhone上是400ms,iPad上是500ms。最理想的启动速度是,在播放完动画后,用户就可以使用。如果应用启动过慢,用户就会放弃使用,甚至永远都不再回来。抛开代码不谈,如果抱着PC端游和单机游戏的思维,在游戏启动时强加公司Logo,启动动画,并且用户不可跳过,也会使用户的成功使用率大大降低。iOS系统的“看门狗"为了防止一个应用占用过多的系统资源,开发iOS的苹果工程师门设计了一个“看门狗”的机制。在不同的场景下,“看门狗”会监测应用的性能。如果超出了该场景所规定的运行时间,“看门狗”就会强制终结这个应用的进程。开发者们在crashlog里面,会看到诸如0x8badf00d这样的错误代码(“看门狗”吃了坏的食物,它很不高兴)。值得注意的是,Xcode在Debug的时候,会禁止“看门狗”。如何测试启动时间两种方法:一种使用NSLog,另外一种使用TimeProfiler。使用NSLog

1

CFAbsoluteTime

StartTime;

2

int

main(int

argc,

char

**argv)

{

3

StartTime

=

CFAbsoluteTimeGetCurrent();

4

//

...

5

}

6

7

-

(void)applicationDidFinishLaunching:(UIApplication

*)app

{

8

dispatch_async(dispatch_get_main_queue(),

^{

9

NSLog(@"Launched

in

%f

sec",

CFAbsoluteTimeGetCurrent()

-

StartTime);10

});11

//

...12

}使用TimeProfilerInstruments->TimeProfilerProfile你的app切换到CPUstrategyview,找到你的app启动的第一帧搜索-[UIApplication_reportAppLaunchFinished]找到包含-[UIApplication_reportAppLaunchFinished]的最后一帧,即可计算出启动时间iOSApp启动过程链接并加载Framework和staticlibUIKit初始化应用程序callback第一个CoreAnimationtransaction链接并加载Framework及staticlib时需要注意:每个Framework都会增加启动时间和占用的内存不必要的Framework,不要链接必要的Framework,不要票房为Optional只在使用在DeploymentTarget之后发布的Framework时,才使用Optional(比如你的DeploymentTarget是iOS3.0,需要链接StoreKit的时候)避免创建全局的C++对象初始化UIKit时需要注意:字体、状态栏、userdefaults、mainnib会被初始化保持mainnib尽可能的小Userdefaults本质上是一个plist文件,保存的数据是同时被反序列化的,不要在userdefaults里面保存图片等大数据应用程序的回调:application:willFinishLaunchingWithOptions:恢复应用程序的状态application:didFinishLaunchingWithOptions:我一直认为设计的本质是折

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论