D
DanielTitan
Curioso
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Hola a todos.
Estoy desarrollando un sintetizador llamado TITAN con C++ y JUCE. Necesito orientación para diagnosticar su rendimiento sin reducir voces, capas de unísono ni calidad sonora.
Esta consulta está redactada con ayuda de IA. Las cifras proceden de pruebas locales.
Configuración:
Una aclaración importante: estamos midiendo la llamada completa de procesamiento mediante una prueba offline, sin interfaz y marcada como no-realtime. Por tanto, superar 10 ms aquí no demuestra por sí solo un corte de audio en vivo.
En las últimas tres rondas comparativas obtuvimos estos tiempos, en milisegundos:
Las cifras están en el mismo orden de rondas. P95 significa que el 95 % de las llamadas tardó ese tiempo o menos. Conservamos todos los bloques y picos, sin eliminarlos de las estadísticas.
Probamos dos optimizaciones SIMD independientes. Mantuvieron exactamente el audio y los estados comparados, pero ninguna mejoró consistentemente el bloque completo. Quedaron descartadas.
Mis preguntas son:
1. ¿Cómo harían una prueba representativa del procesamiento en tiempo real para contrastarla con esta medición offline?
2. ¿Cómo separarían el tiempo de cálculo DSP del tiempo que los trabajadores pasan esperando o sin recibir CPU?
3. ¿Qué mediciones permitirían comprobar si el coste está en las operaciones, el movimiento de datos o la sincronización entre hilos?
Por ahora no compartiré código fuente, presets ni archivos del proyecto. Busco orientación inicial sobre qué medir y cómo interpretar los resultados.
Gracias.
Estoy desarrollando un sintetizador llamado TITAN con C++ y JUCE. Necesito orientación para diagnosticar su rendimiento sin reducir voces, capas de unísono ni calidad sonora.
Esta consulta está redactada con ayuda de IA. Las cifras proceden de pruebas locales.
Configuración:
- Intel Core i5-1155G7, Windows de 64 bits.
- JUCE 7.0.12, compilación Release con MSVC y optimización PGO.
- Audio a 48 kHz y bloques de 480 muestras: equivalen a 10 ms de audio.
- Tres notas simultáneas, con ocho capas internas de unísono por nota.
- 800 bloques por ejecución, incluyendo ataque, sonido sostenido, liberación y silencio posterior.
Una aclaración importante: estamos midiendo la llamada completa de procesamiento mediante una prueba offline, sin interfaz y marcada como no-realtime. Por tanto, superar 10 ms aquí no demuestra por sí solo un corte de audio en vivo.
En las últimas tres rondas comparativas obtuvimos estos tiempos, en milisegundos:
- Base actual: P95 de 12,09 / 11,94 / 12,33; máximos de 33,18 / 24,07 / 20,36.
- Candidato optimizado: P95 de 12,76 / 11,82 / 10,97; máximos de 78,62 / 21,88 / 36,99.
Las cifras están en el mismo orden de rondas. P95 significa que el 95 % de las llamadas tardó ese tiempo o menos. Conservamos todos los bloques y picos, sin eliminarlos de las estadísticas.
Probamos dos optimizaciones SIMD independientes. Mantuvieron exactamente el audio y los estados comparados, pero ninguna mejoró consistentemente el bloque completo. Quedaron descartadas.
Mis preguntas son:
1. ¿Cómo harían una prueba representativa del procesamiento en tiempo real para contrastarla con esta medición offline?
2. ¿Cómo separarían el tiempo de cálculo DSP del tiempo que los trabajadores pasan esperando o sin recibir CPU?
3. ¿Qué mediciones permitirían comprobar si el coste está en las operaciones, el movimiento de datos o la sincronización entre hilos?
Por ahora no compartiré código fuente, presets ni archivos del proyecto. Busco orientación inicial sobre qué medir y cómo interpretar los resultados.
Gracias.

