Me gustaría saber cuánto tarda en enviar un mensaje a un objeto con una precisión de al menos 1 ms. ¿Cómo hago esto?¿Cómo puedo cronometrar con precisión el tiempo que lleva invocar una función en el iPhone?
Respuesta
Aquí es lo que hago:
NSDate * start = [NSDate date];
// do whatever I need to time
NSLog(@"time took: %f", -[start timeIntervalSinceNow]);
La salida será en cuestión de segundos (con una parte decimal). NSDate
s tienen una resolución en la escala de milisegundos, aunque no estoy seguro de qué tan precisos son.
Si el código que está intentando medir es demasiado rápido, colóquelo en un bucle que ejecute el código cientos de veces. (Eso supone, por supuesto, que el código que está cronometrando no tiene efectos secundarios.)
Puede usar mach_absolute_time
para medir en nanosegundos.
#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;
Referencia: Technical Q&A QA1398: Mach Absolute Time Units
Uso dispatch_benchmark para registrar el tiempo de ejecución método en nanosegundos.
Tiene una sintaxis mucho más agradable que bucles y llamadas manuales mach_absolute_time() dispatch_benchmark es parte de Grand Central Dispatch. Esta función no está declarado públicamente, por lo que tendrá que hacer eso mismo antes de su uso:
extern uint64_t dispatch_benchmark(size_t count, void (^block)(void));
estoy usando esto para el tiempo de ejecución de 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);
crédito va a Benchmarking
- 1. ¿Cómo puedo comparar con precisión el tiempo que lleva cargar un modelo?
- 2. Mida el tiempo que lleva ejecutar una consulta t-sql
- 3. ¿Cómo sincronizar con precisión el tiempo entre los iPhones?
- 4. ¿Cómo puedo medir el tiempo con microsegundos de precisión en Java?
- 5. ¿Cuánto tiempo lleva un módulo en el núcleo de Perl?
- 6. ¿Cómo estimar el tiempo de descarga restante (con precisión)?
- 7. ¿Cómo puedo invocar el desbordamiento del búfer?
- 8. ¿Cómo puedo calcular cuánto tiempo tarda una función en jQuery?
- 9. cómo invocar dinámicamente una función en C++
- 10. ¿Puedo invocar una función en una expresión lambda?
- 11. ¿Cómo puedo invocar una función miembro usando notación de corchetes?
- 12. ¿Cuesta cronometrar Stopwatch.Getttamptamp? O retroceder?
- 13. ¿Cómo puedo medir el tiempo de CPU que tarda una función Clojure en ejecutarse?
- 14. Esto lleva mucho tiempo ... ¿cómo puedo acelerar este diccionario? (python)
- 15. ¿Cuánto tiempo le lleva a una aplicación de iOS reconocer un cambio en el DNS?
- 16. ¿Cómo puedo medir el tiempo que lleva entre dos líneas de código en Objective-C para iOS?
- 17. ¿Cuánto tiempo lleva compilar Glibc?
- 18. cómo medir el ancho de una cuerda con precisión?
- 19. ¿Cómo puedo obtener el tiempo real en iPhone, no el tiempo establecido por el usuario en Configuración?
- 20. Crear índice lleva demasiado tiempo
- 21. Cómo calcular el tiempo de una operación en microsegundos de precisión
- 22. Tiempo de precisión en .NET
- 23. Reflexión: ¿Cómo invocar el método con parámetros
- 24. Muchas columnas UPDATE-JOIN con many-ISNULL lleva mucho tiempo?
- 25. Limitar el tiempo que una función procesa en una R para el ciclo
- 26. ¿Cómo producir un tono y silencio con precisión de tiempo?
- 27. ¿Cómo obtener tiempo en PHP con precisión de nanosegundos?
- 28. ¿Con qué precisión (en términos de tiempo) Windows reproduce audio?
- 29. mysql "drop database" lleva tiempo, ¿por qué?
- 30. Seguimiento en tiempo real en el Iphone
Esto es lo que corro. Personalmente no me importa si es demasiado rápido ya que solo me preocupan los cuellos de botella. =) – migs647