衡量iOS应用启动性能的标准方法



我曾被要求缩短iOS应用程序的启动时间。总的来说,我对平台/工具非常熟悉,但我以前没有关注过应用程序启动时间。我想知道是否有解决这个问题的已知模式?

我意识到我可以简单地测量从main()到完成application:didFinishLaunchingWithOptions:(包括任何后台加载任务)所需的时间,但是再次,我希望可能有一个更标准化的方法来做到这一点。

任何建议都将非常感谢!

- m

from WWDC 2012 session 235

将起点设置在main.m

中的第一行代码
#import <UIKit/UIKit.h>
CFAbsoluteTime StartTime;
int main(int argc, char *argv[])
{
    StartTime = CFAbsoluteTimeGetCurrent();
    @autoreleasepool {
        ...

设置终点在AppDelegateapplication:didFinishLaunchingWithOptions:

extern CFAbsoluteTime StartTime;
 ...
dispatch_async(dispatch_get_main_queue(), ^{
    NSLog(@"Launched in %f sec", CFAbsoluteTimeGetCurrent() - StartTime);
});

您的方法听起来是正确的(我建议使用CFAbsoluteTime进行测量)。

可以帮助你减少启动时间的一件事是避免在应用启动时从nib加载视图控制器。如果我没记错的话,这将迫使它们在应用启动前就被加载到内存中。相反,当你需要时,动态地分配和初始化你的视图控制器。请注意,你仍然可以有你想被存储在nib中的视图控制器加载的视图,你不必停止使用IB,只是不要使用IB为你的应用程序委托设置静态出口。

最新更新