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.