¿Cuánto más rápido es CoreFoundation que Cocoa / Cocoa Touch?

En ciertos casos, la FQ puede ser más rápida que las clases de colección estándar de Foundation. Por ejemplo, si desea almacenar una matriz de enteros de tamaño de puntero sin caja, no puede hacerlo de manera particularmente eficiente usando NSArray (cada valor tendría que estar en un NSNumber), pero puede hacerlo fácilmente usando una CFArray con un parámetro de devolución de llamada NULL en el constructor.

Por supuesto, para este ejemplo en particular, resulta que puede usar otra clase de Foundation que muy pocas personas usan (NSPointerArray) para almacenar entradas sin caja. NSMapTable y NSHashTable son estructuras de datos que también se pueden usar para fines similares.

Sin embargo, en general, recomendaría seguir los consejos de Justin y escribir a la Fundación, y solo ir a la FQ cuando sea completamente necesario. Debido a que la mayoría de las clases de Foundation son gratuitas para las clases de CF, lo que está pagando principalmente es el costo de objc_msgSend frente a una llamada de función C estándar, y en la mayoría de las aplicaciones el envío de mensajes no será un cuello de botella.

CFStringRef y NSString son puenteados sin cargo. La API que toma NSString tomará una CFString con solo un tipo de conversión, y viceversa. No necesita preocuparse porque uno use significativamente más memoria que el otro.

No entiendo lo que quieres decir con el uso de NSNotification en lugar de ejecutar devoluciones de llamada de bucle. Para responder a una NSNotification, agregará un observador de notificaciones a su runloop. Esto terminará siendo una devolución de llamada runloop de todos modos. Una posible ventaja de usar NSNotification es que estará en una posición ligeramente mejor para dividir su aplicación en un programa que se ejecute en múltiples procesos y use NSNotification como mecanismo de IPC.

Mi consejo para usted es hacer las cosas al más alto nivel posible (en este caso, en Cocoa / Cocoa Touch) y solo desplegarse cuando sea necesario por razones de rendimiento / funcionalidad. Y no se preocupe por el rendimiento hasta que pueda medirlo. Es poco probable que las diferencias entre CF y Foundation sean el cuello de botella en el rendimiento de su aplicación.