2009-03-14 13 views

cevap

12

İşte böyle yapar:

NSDate * start = [NSDate date]; 
// do whatever I need to time 
NSLog(@"time took: %f", -[start timeIntervalSinceNow]); 

çıktı saniye içinde olacaktır (ondalık kısmı ile). NSDate s milisaniye ölçeğinde çözünürlük var, ancak ne kadar doğru olduklarından emin değilim.

Zaman geçirmeye çalıştığınız kod çok hızlıysa, kodu yüz kez çalıştıran bir döngüye koyun. (Tabii ki, zamanladığınız kodun hiçbir yan etkisi olmadığını varsayar.)

+0

Koştuğum şey bu. Ben sadece darboğazları önemsediğim için çok hızlı olup olmadığımı umursamıyorum. =) – migs647

15

Nanosaniye cinsinden ölçmek için mach_absolute_time'u kullanabilirsiniz.

#import <mach/mach_time.h> 

uint64_t startTime = 0; 
uint64_t endTime = 0; 
uint64_t elapsedTime = 0; 
uint64_t elapsedTimeNano = 0; 

mach_timebase_info_data_t timeBaseInfo; 
mach_timebase_info(&timeBaseInfo); 

startTime = mach_absolute_time(); 

//do something here 

endTime = mach_absolute_time(); 

elapsedTime = endTime - startTime; 
elapsedTimeNano = elapsedTime * timeBaseInfo.numer/timeBaseInfo.denom; 

Referans: Technical Q&A QA1398: Mach Absolute Time Units

0

kullanımlar dispatch_benchmark nanosaniye yöntem yürütme zaman oturum açmak için.
mach_absolute_time() dispatch_benchmark, el ile döngüden ve çağırandan daha güzel bir sözdizimine sahiptir. Grand Central Dispatch'in bir parçasıdır.

size_t const blockIterations = 1; //block call count 
uint64_t t = dispatch_benchmark(blockIterations, ^{ //your code inside block 
     [self TEST_processJSONDataRecordsWithCompletionHandler:^(id handler) {}]; 
    }); 
NSLog(@" Avg. Runtime in nanoseconds : %llu ns", t); 

Kredi Benchmarking

gider: Günlük yürütme kez

extern uint64_t dispatch_benchmark(size_t count, void (^block)(void));

Bu kullanıyorum: Kendinizi Kullanmadan önce bunu yapmak zorunda olacak böylece bu fonksiyon alenen ilan edilmez

İlgili konular