Mat*_*y P 16 performance objective-c app-startup ios
我被要求减少iOS应用程序的启动时间.我对平台/工具一般非常熟悉,但我之前没有专注于应用程序启动时间.我想知道是否有已知的攻击这个问题的模式?
我意识到我可以简单地测量从main()到完成application:didFinishLaunchingWithOptions:
(包括任何后台加载任务)所需的时间,但同样,我希望可能有更标准化的方法来执行此操作.
任何建议将不胜感激!
-M
Gon*_*Gon 14
来自WWDC 2012会议235
在第一行代码中设置起点 main.m
#import <UIKit/UIKit.h>
CFAbsoluteTime StartTime;
int main(int argc, char *argv[])
{
StartTime = CFAbsoluteTimeGetCurrent();
@autoreleasepool {
...
Run Code Online (Sandbox Code Playgroud)
某处设置终点AppDelegate
的application:didFinishLaunchingWithOptions:
extern CFAbsoluteTime StartTime;
...
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"Launched in %f sec", CFAbsoluteTimeGetCurrent() - StartTime);
});
Run Code Online (Sandbox Code Playgroud)
您的方法听起来是正确的(我建议使用 CFAbsoluteTime 进行测量)。
可以帮助您减少启动时间的一件事是避免在应用程序启动时从 nib 加载视图控制器。如果我没有记错的话,这会迫使它们甚至在您的应用程序启动之前就加载到内存中。相反,在需要时动态分配和初始化视图控制器。请注意,您仍然可以将视图控制器加载的视图存储在 Nib 中,您不必停止使用 IB。只是不要使用 IB 为您的应用程序委托设置静态出口。
归档时间: |
|
查看次数: |
2709 次 |
最近记录: |