Bitshift << statt pow (a,b) für Performance?



  • hallo leute,

    ich hab schon einiges darüber gelesen, bin aber nie richtig durchgestiegen,
    wie ich das verwenden kann.
    wäre also super, wenn sich nochmal jemand erbarmen könnte mir das zu
    erklären.
    habe gelesen, dass es sich auf die performance auswirkt. da ich das im
    zusammenhang mit der
    verarbeitung von audiodaten benötige und ich in der regel mehrere millionen
    dieser operationen pro
    schleife abarbeite, kann ich mir vorstellen das das bitshift einen
    geschwindigkeitsvorteil bringt.

    [c++]
    // ich benötige das potenzieren
    pow (a, b);
    // und auch das wurzel ziehen
    pow (a, 1/b);
    [c++]

    b ist in der regel nicht 2.
    was denkt ihr?

    danke
    zeh



  • Das shiften bringt nichts - denn die Compiler optimieren mittlerweile verdammt gut.

    Ich würde eher versuchen das Wurzelziehen zu eliminieren und potenzieren nur mit ganzzahlen.



  • pow(a,b)

    Wichtig ist nicht, ob b zwei ist, sondern ob a eine Zweierpotenz ist. Es gilt ganz einfach: 2^x = 1 << x. Auf andere Potenzen ist das (ohne weiteres?) nicht anwendbar.



  • Wenn es so auf Geschwindigkeit ankommt solltest du eh verschiedene kleine Routinen auf Performance testen.
    So mache ich es wenn ich groessere Programme schreibe.


Anmelden zum Antworten