Was ist schneller: Berechnen oder aus Tabelle auslesen?



  • Probier' es aus.



  • hmmmmmm schrieb:

    Betrachte z.B. folgende Situation:

    // 1. Variante
    x = a*64 + b;
    
    // 2. Variante
    x = a_b_table[a][b]; // wobei a_b_table so gefüllt ist, dass sie x wie in 1. Variante berechnet
    

    Was ist heutzutage schneller?

    Kommt drauf an. Wenn du den Wert der Tabelle noch nicht im 1st level cache hattest, dann dauert das ziemlich lange (mindestens etwa 300 Zyklen). Und die Multiplikation mit 64 kann schön per Bit-Shift optimiert werden. Das machen gute Compiler inzwischen automatisch. So'n Shift ist heutzutage auf modernen general-purpose Rechnern nur 1 Taktzyklus, genauso wie eine Addition. Antwort bitte selbst überlegen oder messen.


Anmelden zum Antworten