Chciałbym wiedzieć, ile czasu zajmuje wysłanie wiadomości do obiektu z dokładnością co najmniej 1 ms. Jak mam to zrobic?Jak dokładnie określić czas potrzebny na wywołanie funkcji w telefonie iPhone?
Odpowiedz
Oto, co zrobić:
NSDate * start = [NSDate date];
// do whatever I need to time
NSLog(@"time took: %f", -[start timeIntervalSinceNow]);
wyjście będzie w sekundach (z części po przecinku). NSDate
s mają rozdzielczość w skali milisekund, chociaż nie jestem pewien dokładnie, jak dokładne są.
Jeśli kod, który próbujesz zrobić, jest zbyt szybki, umieść go w pętli, która uruchamia kod sto razy. (To oczywiście zakłada, że kod, którego używasz, nie ma skutków ubocznych.)
Możesz użyć mach_absolute_time
, aby zmierzyć w nanosekundach.
#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;
referencyjny: Technical Q&A QA1398: Mach Absolute Time Units
Zastosowanie dispatch_benchmark zalogować metodę czas wykonywania w nanosekund.
Ma znacznie ładniejszą składnię niż ręcznie zapętlanie i wywoływanie mach_absolute_time() dispatch_benchmark jest częścią Grand Central Dispatch. Ta funkcja nie jest dostępna publicznie ogłoszony, więc musisz to zrobić sam przed użyciem:
extern uint64_t dispatch_benchmark(size_t count, void (^block)(void));
Używam tego do czasu wykonania log:
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);
zasługa Benchmarking
- 1. Rozpoznawanie mowy na telefonie iPhone
- 2. Java IDE * na * telefonie iPhone?
- 3. czas potrzebny na rozwidlenie procesu potomnego
- 4. Jak wykonywać operacje podczas odtwarzania dźwięku w telefonie iPhone?
- 5. Dokładny czas funkcji w python
- 6. Jak wykonać wbudowany montaż w telefonie iPhone?
- 7. Jak zatrzymać UIView CABasicAnimation w telefonie iPhone
- 8. Jak zaimplementować wykres słupkowy w telefonie iPhone?
- 9. Jak przeanalizować wartość Json w telefonie iPhone?
- 10. Jak wykonać geokodowanie (NIE odwrotne geokodowanie) na telefonie iPhone?
- 11. Debuguj niejasny błąd na telefonie iPhone
- 12. Jak przekonwertować NSData na tablicę bajtów w telefonie iPhone?
- 13. Wyskakujące powiadomienie o telefonie iPhone
- 14. Testowanie poza warunkami kosmicznymi w telefonie iPhone
- 15. Jak dokładnie określić lokalizację odwiedzającego moją witrynę?
- 16. Używanie uwierzytelniania HTTP Digest w telefonie iPhone
- 17. Jak uzyskać kod MCC i MNC na telefonie iPhone?
- 18. Jak poprawić wydajność wkładki obiektu Core Data na telefonie iPhone?
- 19. Suma pamięci RAM w telefonie iPhone
- 20. Jak zmienić domyślny kolor przycisku na telefonie iPhone?
- 21. Jak programowo odtwarzać pliki MP3 na telefonie iPhone?
- 22. Jak przesłać zapytanie do tabeli ARP na telefonie iPhone?
- 23. Zmierz czas potrzebny na wykonanie kwerendy t-sql.
- 24. iphone - Jak kontrolować cień CALayera, dokładnie?
- 25. Nazwa czcionki niesystemowej w telefonie iPhone
- 26. Zainstaluj aplikację webapp na ekranie głównym na telefonie iPhone?
- 27. Jak oszacować czas pozostały do końca (dokładnie)?
- 28. UINavigation bar background w telefonie iPhone
- 29. Animacja przejścia między stronami w telefonie iPhone
- 30. Jak przekonwertować czas na strefę czasową urządzenia iPhone?
To jest to, co uruchamiam. Osobiście nie dbam o to, czy jest to zbyt szybkie, ponieważ zależy mi tylko na wąskich gardłach. =) – migs647