gcd

La joya oculta en GCD que desconocías: dispatch_benchmark

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 JustCodeIt, escríbenos a [email protected].



Share this:

Leave a comment