Optimieren mit Inline-MMX-Instruktionen...



  • Hallo!

    Zweites Problem: ich habe auch hier ein Uint16-Array, wobei ich jeden zweiten eintrag mit einem float-wert (der ist von 0.0 bis 1.0) multiplizieren will... das mach ich (vereinfacht dargestellt) mit C/C++ so:

    for (int i = 0; i < samples*2; i += 2) {
         wave_data[i] = wave_data[i] * factor_left;
         wave_data[i+1] = wave_data[i+1] * factor_right;
    }
    

    (wie unschwer zu erkennen ist, ist das ganze für Panning) solche sachen kann man doch sicher auch mit MMX schneller/effektiver machen, oder?? der float (factor_left/right) kann auch ohne weiteres ein int sein, der einfach 100x größer als das jetzige factor_left/right ist und dann muss nach der multiplizierung mit dem sample (wave_data[i]) halt noch mal durch 100 dividiert werden.



  • Hi.

    Integer-Operationen sind auf jeden Fall schneller, als Gleitkomma-Geschichten - auch, wenn du bei ersterer Variante dann noch eine Division brauchst.

    Wie du das mit MMX besser loesen koenntest => keine Ahnung. 🙄
    Aber es gibt in den ASM-FAQ auch einen Link zu einem Tuturial ueber MMX.


Anmelden zum Antworten