Vorrei sapere quanto tempo impiega inviare un messaggio a un oggetto con almeno 1 ms di precisione. Come faccio a fare questo?Come faccio a sapere con precisione il tempo necessario per chiamare una funzione su iPhone?
risposta
Ecco quello che faccio:
NSDate * start = [NSDate date];
// do whatever I need to time
NSLog(@"time took: %f", -[start timeIntervalSinceNow]);
L'uscita sarà in secondi (con una parte decimale). Gli NSDate
hanno una risoluzione sulla scala dei millisecondi, anche se non sono sicuro di quanto accurati siano.
Se il codice che stai provando per il tempo è troppo veloce, inseriscilo in un ciclo che esegue il codice un centinaio di volte. (Ciò presuppone, ovviamente, che il codice che stai cronometrando non abbia effetti collaterali.)
È possibile utilizzare mach_absolute_time
per misurare in nanosecondi.
#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;
Riferimento: Technical Q&A QA1398: Mach Absolute Time Units
Usa dispatch_benchmark per accedere metodo di tempo di esecuzione in nanosecondi.
Ha una sintassi molto più gradevole rispetto al ciclo e alla chiamata manuale mach_absolute_time() dispatch_benchmark fa parte di Grand Central Dispatch. Questa funzione non è pubblicamente dichiarato, quindi dovrete farlo da soli prima dell'uso:
extern uint64_t dispatch_benchmark(size_t count, void (^block)(void));
Sto usando questo per il tempo di esecuzione di registro:
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);
merito va a Benchmarking
- 1. Come faccio a sapere dove trascorre il tempo il compilatore?
- 2. Calcolare il tempo necessario per eseguire una determinata funzione
- 3. come faccio a sapere se ho iPhone 2G, 3G, 3GS
- 4. Come faccio a sapere perché g ++ impiega molto tempo su un particolare file?
- 5. Come faccio a chiamare il costruttore giusto?
- 6. Come faccio a sapere se una tabella è una matrice?
- 7. Come fa il compilatore C++ a sapere quale implementazione di una funzione virtuale chiamare?
- 8. Come faccio a sapere quale porta seriale usare su Linux?
- 9. Che cos'è l'AppDelegate e come faccio a sapere quando utilizzarlo?
- 10. Come chiamare una funzione su div ridimensionare?
- 11. Su OS X, come faccio a sapere per quale architettura è stata compilata una libreria condivisa?
- 12. Come stimare il tempo di download rimanente (con precisione)?
- 13. Come calcolare un'onda sinusoidale con precisione nel tempo
- 14. Misurare il tempo necessario per eseguire una query t-sql
- 15. Come faccio a sapere che il columnizing è fatto?
- 16. Come faccio a sapere quale gemma ha una dipendenza specifica?
- 17. È necessario chiamare la funzione originale dalla funzione deviata
- 18. Funzione per chiamare ripetutamente una funzione?
- 19. Come faccio a sapere il mio sistema disponibile Gradle buildToolsVersion
- 20. Come faccio a sapere se posso disabilitare SQLALCHEMY_TRACK_MODIFICAZIONI?
- 21. Come faccio a sapere se il mio IE è a 64 bit? (Anche per Java?)
- 22. Come faccio a sapere quando un'immagine è caricata in Picturebox
- 23. Usando `select` per chiamare una funzione
- 24. Come faccio a sapere se il mio server ha NUMA?
- 25. Come faccio a sapere il tag corrente di Mercurial?
- 26. Come faccio a sapere il tipo di parametro webmessage onmessage?
- 27. matematica di precisione a doppio iPhone/iPad
- 28. Come faccio a sapere quando indicizzare una colonna e con cosa?
- 29. Come faccio a profilare una funzione MEX in Matlab
- 30. Valgrind - callgrind Profiler: come sapere quale funzione richiede più tempo
Questo è quello che corro. Personalmente non mi interessa se è troppo veloce dato che mi interessano solo i colli di bottiglia. =) – migs647