400 028 6601

建站动态

根据您的个性需求进行定制 先人一步 抢占小程序红利时代

性能优化策略

性能问题的处理流程

性能优化策略

在以上的四个步骤中循环反复,直到问题解决。

Profile!不要猜!

性能优化的主要策略:

说起来惭愧,我真的很少遇到性能问题。以前假设中的性能问题,很多是根本不存在的。事前计划也杜绝了不了性能问题的产生,所以不如暂时忘记它吧。当然对于一些常识性的提高性能的设计,仍然是必须的。

二:iOS应用启动速度优化

很多app的开发者都不重视app的启动速度,这对于碎片化使用情景的用户来说,简直是灾难。

iOS应用的启动速度

应用启动时,会播放一个放大的动画。iPhone上是400ms,iPad上是500ms。最理想的启动速度是,在播放完动画后,用户就可以使用。

如果应用启动过慢,用户就会放弃使用,甚至永远都不再回来。抛开代码不谈,如果抱着PC端游和单机游戏的思维,在游戏启动时强加公司Logo,启动动画,并且用户不可跳过,也会使用户的成功使用率大大降低。

iOS系统的“看门狗"

为了防止一个应用占用过多的系统资源,开发iOS的苹果工程师门设计了一个“看门狗”的机制。在不同的场景下,“看门狗”会监测应用的性能。如果超出了该场景所规定的运行时间,“看门狗”就会强制终结这个应用的进程。开发者们在crashlog里面,会看到诸如0x8badf00d这样的错误代码(“看门狗”吃了坏的食物,它很不高兴)。

场景“看门狗”超时时间
启动20秒
恢复运行10秒
悬挂进程10秒
退出应用6秒
后台运行10分钟

值得注意的是,Xcode在Debug的时候,会禁止“看门狗”。

如何测试启动时间

两种方法:一种使用NSLog,另外一种使用Time Profiler。

 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  }

iOS App启动过程

链接并加载Framework及static lib时需要注意:

初始化UIKit时需要注意:

应用程序的回调:

我一直认为设计的本质是折衷。当你为了100ms的启动速度优化欢欣不已,而无视那长达10秒的启动动画时,应该想想究竟什么是应该做的。做正确的事情比把事情做好更重要。

三:事件处理-拯救主线程

用户经常评论app的一个用词是“卡顿”,很大的因素是因为主线程被占用了。用户的事件


分享题目:性能优化策略
网页URL:http://mbwzsj.com/article/pgssph.html

其他资讯

让你的专属顾问为你服务