En mis cursos, siempre digo que Grand Central Dispatch es un baúl del tesoro lleno de maravillas por descubrir. Por eso recomiendo que rebusquéis en la documentación a ver qué encontráis.
Sin embargo, hay cosas que ni buscando uno encuentra, porque a alguien se le olvidó exportar la función en concreto. Estoy hablando de nuestro amigo dispatch_benchmark().
¿Quieres averiguar quién es el más rápido? Prueba dispatch_benchmark()
Como el nombre indica, sirve para descubrir cuanto tarda en ejecutarse un cierto código. Recibe dos parámetros, un entero y un bloque. El entero es el número de veces que se va a ejecutar el bloque. El valor de retorno es el promedio de tiempo de ejecución del bloque, en nanosegundos.
Como no está exportada, la tienes que definir tú en tu código:
extern uint64_t dispatch_benchmark(size_t count, void (^block)(void)); // ¡listo para usar! dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{ uint64_t t = dispatch_benchmark(1, ^{ [self setPersistentStoreCoordinator]; }); NSLog(@"Migration took %lluns", t); });
¡Colorín, colorado, este cuento ha compilado!
¡Un segundo! Y esto, ¿cómo se hace en Swift? Lo veremos luego. 🙂
Si tienes algo que deseas compartir o quieres formar parte de KeepCoding, escríbenos a [email protected].