12 votes

Optimisation de la conversion C++

J'aimerais savoir s'il existe un moyen plus rapide d'effectuer ma conversion audio que de parcourir toutes les valeurs une par une et de les diviser par 32768.

void CAudioDataItem::Convert(const vector<int>&uIntegers, vector<double> &uDoubles)
{
    for ( int i = 0; i <=uIntegers.size()-1;i++)
    {
        uDoubles[i] = uIntegers[i] / 32768.0;
    }
}

Mon approche fonctionne bien, mais elle pourrait être plus rapide. Cependant, je n'ai pas trouvé de moyen de l'accélérer.

Merci pour votre aide !

0voto

ruben2020 Points 802

Laissez-moi essayer une autre façon :

Si la multiplication est sérieusement meilleure du point de vue des instructions d'assemblage, alors cela devrait garantir qu'elle sera multipliée.

void CAudioDataItem::Convert(const vector<int>&uIntegers, vector<double> &uDoubles)
{
    for ( int i = 0; i <=uIntegers.size()-1;i++)
    {
        uDoubles[i] = uIntegers[i] * 0.000030517578125;
    }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X