C es objetivo lo suficientemente rápido como para la programación DSP/audio
renderizado en tiempo real
Definitivamente No. El tiempo de ejecución de Objective-C y sus bibliotecas simplemente no están diseñadas para las demandas de la reproducción de audio en tiempo real. El hecho es que es virtualmente imposible garantizar que el uso del tiempo de ejecución de ObjC o bibliotecas como Foundation (o incluso CoreFoundation) no provocarán que su procesador falte a su fecha límite.
el caso común es un bloqueo - incluso una asignación de montón sencillo (malloc
, new
/new[]
, [[NSObject alloc] init]
) probablemente requerirá una cerradura.
Para usar ObjC es utilizar bibliotecas y un tiempo de ejecución que asume que los bloqueos son aceptables en cualquier punto dentro de su ejecución. El bloqueo puede suspender la ejecución de su subproceso de representación (por ejemplo, durante la devolución de llamada de representación) mientras espera adquirir el bloqueo. Entonces puede perder su fecha límite de procesamiento porque su hilo de renderización se mantiene, lo que finalmente resulta en abandonos/fallas.
Pregunte a un desarrollador de plugin de audio profesional: le dirán que el bloqueo dentro del dominio de renderizado en tiempo real está prohibido. No puedes, por ej. ejecute el sistema de archivos o cree asignaciones de pila porque no tiene límites superiores prácticos con respecto al tiempo que le llevará terminar.
Aquí es una buena introducción: http://www.rossbencina.com/code/real-time-audio-programming-101-time-waits-for-nothing
Desconectado representación
Sí, sería aceptablemente rápido en la mayoría de los escenarios de alto nivel mensajería. En los niveles inferiores, recomiendo no usar ObjC porque sería un desperdicio: podría llevar muchas, muchas veces más tiempo renderizar si se usara la mensajería ObjC en ese nivel (en comparación con una implementación C o C++).
Consulte también: Will my iPhone app take a performance hit if I use Objective-C for low level code?
¿Está teniendo problemas de rendimiento? ¿Es esa la fruta colgando más baja? –
objc_msgSend parece ser la fruta colgante más baja en mi caso. – morgancodes