¿Alguna forma de codificar un PNG más rápido que UIImagePNGRepresentation?

Estoy generando un montón de fichas paraCATiledLayer. Se tarda unos 11 segundos en generar 120 mosaicos a 256 x 256 con 4 niveles de detalle en un iPhone 4S. La imagen en sí cabe dentro de 2048 x 2048.

Mi cuello de botella esUIImagePNGRepresentation. Se tarda aproximadamente 0.10-0.15 segundos para generar cada imagen de 256 x 256.

He intentado generar varios mosaicos en diferentes colas de fondo, pero esto solo lo reduce a unos 9-10 segundos.

También he intentado usar el marco de ImageIO con un código como este:

- (void)writeCGImage:(CGImageRef)image toURL:(NSURL*)url andOptions:(CFDictionaryRef) options
{
    CGImageDestinationRef myImageDest = CGImageDestinationCreateWithURL((__bridge CFURLRef)url, (__bridge CFStringRef)@"public.png", 1, nil);
    CGImageDestinationAddImage(myImageDest, image, options);
    CGImageDestinationFinalize(myImageDest);
    CFRelease(myImageDest);
}

Si bien esto produce archivos PNG más pequeños (¡gana!), Toma aproximadamente 13 segundos, 2 segundos más que antes.

¿Hay alguna forma de codificar una imagen PNG deCGImage ¿Más rápido? Quizás una biblioteca que haga uso deNEON Extensión ARM (iPhone 3GS +) comolibjpeg-turbo ¿hace?

¿Hay quizás un formato mejor que PNG para guardar mosaicos que no ocupa mucho espacio?

La única opción viable que he podido encontrar es aumentar el tamaño del mosaico a 512 x 512. Esto reduce el tiempo de codificación a la mitad. Sin embargo, no estoy seguro de qué hará con mi vista de desplazamiento. La aplicación es para iPad 2+ y solo es compatible con iOS 6 (utilizando el iPhone 4S como base).

Respuestas a la pregunta(1)

Su respuesta a la pregunta