8

処理に時間がかかる次のコードがあります。

self.itemsArray = [Helper changeTheA:self.itemsArray];
self.itemsArray = [Helper convertDates:self.itemsArray];

Instrumentsまたは他の場所で、コードの最初の行からコードの2行目に移動するのにかかる時間を測定できる方法はありますか....ティックまたはミリ秒などで?

微調整をしたいのですが、以前のコードよりも改善されているかどうかを確認するために測定できる必要があります。

4

3 に答える 3

6

はい。これには、Instruments の Sampler を使用します。

アプリを実行し、プログラムをしばらく実行してから、Instruments で以下を含むシンボルを見つけます。

self.itemsArray = [Helper changeTheA:self.itemsArray];
self.itemsArray = [Helper convertDates:self.itemsArray];

行ごとに重みを表示する必要があります。また、Instruments ではサンプリング周波数を 40 マイクロ秒まで指定できることに注意してください。

于 2012-04-18T23:47:25.410 に答える
6

最も速く、最も汚い、おそらくあまり正確ではない方法

NSDate *startDate = [NSDate date];

self.itemsArray = [Helper changeTheA:self.itemsArray];

NSLog(@"changeTheA time taken: %f", -[startDate timeIntervalSinceNow]);

基本的なプロファイリングを行っている場合は、もう少し複雑ですが、おそらくより便利なソリューションがここに表示されます。提供されたブロックを実行する C 関数を使用します。


特筆事項

Justin が指摘しているように、 を作成しNSDateてからログアウトするという実際の行為は、測定値に干渉をもたらすため、この手法は大まかな数値を取得するのにのみ有効であり、その場合でも、コード内で大量の反復を実行する必要があります。タイミングブロック。正確な測定が必要な場合は、ジャスティンの回答にスキップしてください

于 2012-04-18T23:30:51.410 に答える
4

次のコードを使用します。

NSTimeInterval start = CACurrentMediaTime();

// your code goes here

NSTimeInterval end = CACurrentMediaTime();
NSTimeInterval delta = end - start;
NSLog(@"Execution took %f seconds.", delta);

よりもはるかに正確ですNSDate

于 2012-04-19T20:40:11.397 に答える