D
DanielTitan
Curioso
Usuário com poucas negociações! Use sempre o saldo do ForoBeta!
Olá a todos.
Estou desenvolvendo um sintetizador chamado TITAN com C++ e JUCE. Preciso de orientação para diagnosticar seu desempenho sem reduzir vozes, camadas de uníssono nem qualidade sonora.
Esta consulta foi redigida com ajuda de IA. Os números procedem de testes locais.
Configuração:
Um esclarecimento importante: estamos medindo a chamada completa de processamento mediante um teste offline, sem interface e marcada como não-realtime. Portanto, superar 10 ms aqui não demonstra por si só um corte de áudio ao vivo.
Nas últimas três rodadas comparativas obtivemos estes tempos, em milissegundos:
Os números estão na mesma ordem de rodadas. P95 significa que 95 % das chamadas levaram esse tempo ou menos. Conservamos todos os blocos e picos, sem eliminá-los das estatísticas.
Testamos duas otimizações SIMD independentes. Mantiveram exatamente o áudio e os estados comparados, mas nenhuma melhorou consistentemente o bloco completo. Ficaram descartadas.
Minhas perguntas são:
1. Como fariam um teste representativo do processamento em tempo real para contrastá-lo com esta medição offline?
2. Como separariam o tempo de cálculo DSP do tempo que os trabalhadores passam esperando ou sem receber CPU?
3. Que medições permitiriam comprovar se o custo está nas operações, no movimento de dados ou na sincronização entre threads?
Por enquanto não compartilharei código-fonte, presets nem arquivos do projeto. Busco orientação inicial sobre o que medir e como interpretar os resultados.
Obrigado.
Estou desenvolvendo um sintetizador chamado TITAN com C++ e JUCE. Preciso de orientação para diagnosticar seu desempenho sem reduzir vozes, camadas de uníssono nem qualidade sonora.
Esta consulta foi redigida com ajuda de IA. Os números procedem de testes locais.
Configuração:
- Intel Core i5-1155G7, Windows de 64 bits.
- JUCE 7.0.12, compilação Release com MSVC e otimização PGO.
- Áudio a 48 kHz e blocos de 480 amostras: equivalem a 10 ms de áudio.
- Três notas simultâneas, com oito camadas internas de uníssono por nota.
- 800 blocos por execução, incluindo ataque, som sustentado, liberação e silêncio posterior.
Um esclarecimento importante: estamos medindo a chamada completa de processamento mediante um teste offline, sem interface e marcada como não-realtime. Portanto, superar 10 ms aqui não demonstra por si só um corte de áudio ao vivo.
Nas últimas três rodadas comparativas obtivemos estes tempos, em milissegundos:
- Base atual: P95 de 12,09 / 11,94 / 12,33; máximos de 33,18 / 24,07 / 20,36.
- Candidato otimizado: P95 de 12,76 / 11,82 / 10,97; máximos de 78,62 / 21,88 / 36,99.
Os números estão na mesma ordem de rodadas. P95 significa que 95 % das chamadas levaram esse tempo ou menos. Conservamos todos os blocos e picos, sem eliminá-los das estatísticas.
Testamos duas otimizações SIMD independentes. Mantiveram exatamente o áudio e os estados comparados, mas nenhuma melhorou consistentemente o bloco completo. Ficaram descartadas.
Minhas perguntas são:
1. Como fariam um teste representativo do processamento em tempo real para contrastá-lo com esta medição offline?
2. Como separariam o tempo de cálculo DSP do tempo que os trabalhadores passam esperando ou sem receber CPU?
3. Que medições permitiriam comprovar se o custo está nas operações, no movimento de dados ou na sincronização entre threads?
Por enquanto não compartilharei código-fonte, presets nem arquivos do projeto. Busco orientação inicial sobre o que medir e como interpretar os resultados.
Obrigado.

