2

アプリケーションのロード時間をベンチマークしたいのですが、これを行う方法がわかりません。いくつかのsを挿入NSLogし、タイムスタンプを比較することから始めることができます。しかし、これらをどこに配置すればよいですか?

viewDidAppearユーザーがアプリケーションを利用できるのはこれが初めてなので、2番目のログをルートビューコントローラーに配置する必要がありますか?そして、最初のログはどうですか?私はapplicationDidFinishLaunchingWithOptionsを検討していました:しかし、名前はこれが少し遅いことを示唆しています。

チュートリアル、楽器、またはその他のものへの参照をいただければ幸いです。

4

3 に答える 3

3

この方法で、最初のフレームの起動時間をログに記録できます。

int main(int argcv, char *argv[])
{
    startTime = CFAbsoluteTimeGetCurrent();
}

-(void) applicationDidFinishLaunching(UIApplication *)app {
   dispatch_async(dispatch_get_main_queue(), ^{
     NSLog(@"Launched in %f sec", CFAbsoluteTimeGetCurrent() - startTime);

}

ビデオにアクセスできる場合-iOSアプリのパフォーマンスと応答性に関する2012 WWDC優れたビデオセッションを受講することをお勧めします。235読み込み時間を測定する方法に関するセクションがあります。

于 2012-10-20T17:24:04.727 に答える
3

ウォッチドッグに関する限り、「起動時間」は、main呼び出されてからapplicationDidFinishLaunching:YES を返すまでにかかる時間です。この時間が長すぎると、アプリは「悪い食べ物」の例外で強制終了されます。

あなたの制御下にあり、ユーザーに影響を与えるコードの部分は、application:didFinish...( willFinishiOS6 では) で始まり、最初のビュー コントローラーの viewDidAppear で終わります。これらのメソッドの開始時にログを記録することは問題ありません。

ここでは、アプリケーションの起動とライフ サイクルの段階に関するリファレンスを示します。

于 2012-10-20T17:09:30.727 に答える
1
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];
[dateFormatter setTimeStyle:NSDateFormatterShortStyle];
//[dateFormatter setDateFormat:@"hh:mm:ss"]
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss.SSS"];
NSLog(@"Date%@", [dateFormatter stringFromDate:[NSDate date]]);
[dateFormatter release];

開始時間から終了時間を引いて、ロード時間を取得します

于 2012-10-23T02:03:20.583 に答える