La joya oculta en GCD que desconocías: dispatch_benchmark

Autor: | Última modificación: 13 de marzo de 2024 | Tiempo de Lectura: 1 minutos
Temas en este post:
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].

Posts Relacionados