geschwindigkeit von referenzen



  • gibt es (im tick-bereich) einen unterschied ob man

    void bla(long int blub);
    

    oder

    void bla(const long int& blub);
    

    schreibt?



  • Ja, ersteres ist etwas schneller.


  • Mod

    tickbereich schrieb:

    Ja, ersteres ist etwas schneller.

    Das kann man so allgemein nicht sagen, da es auch darauf ankommt was genau man für ein System hat und was man mit dem Wert macht und wie der compiler optimiert. Antwort kann nur sein:
    1. Probier es aus
    2. Wenn das eine wichtige Optimierung in deinem Algorithmus ist, dann machst du höchstwahrscheinlich etwas nicht richtig.



  • Man sollte erst ab zusammengesetztem Datentyp über Referenzen nachdenken und Optimierungen möglichst einem Compiler überlassen. Generell kannst du durch eigene Optimierungen den Compiler nur unnötig verwirren so dass er eine effizientere Optimierung womöglich nicht durchführen kann. Wenn der gepostete Code deinen Flaschenhals darstellt solltest du über einen anderen Algorithmus nachdenken.



  • Bei skalaren Typen sollte eine Kopie eigentlich immer schneller sein, weil eine Referenz ungefähr gleich gross zu kopieren ist, aber zusätzlich dereferenziert werden muss. Ich würde also long als Parametertyp verwenden, das verwirrt auch weniger.

    Was anderes ist es natürlich, wenn du tatsächlich eine Referenz auf den Wert brauchst, um irgendwelche Änderungen am Original mitzuverfolgen.


Anmelden zum Antworten