Bei Objekten (insbesondere Zeichenketten) ist der Aufruf per Verweis schneller als call-by-value, da der Funktionsaufruf keine Kopie des ursprünglichen Objekts erstellen muss. Mit const kann auch sichergestellt werden, dass die Referenz nicht missbraucht wird.Ruft Const als Referenz die Performance auf, wenn sie auf primitive Typen angewendet wird?
Meine Frage ist, ob const call-by-reference auch schneller ist, wenn primitive Typen wie bool, int oder double verwendet werden.
void doSomething(const string & strInput, unsigned int iMode);
void doSomething(const string & strInput, const unsigned int & iMode);
Mein Verdacht ist, dass es von Vorteil ist Call-by-Referenz zu verwenden, sobald die primitive Größe des Typs in Bytes die Größe des Adresswert überschreitet. Auch wenn der Unterschied gering ist, würde ich gerne den Vorteil nutzen, da ich einige dieser Funktionen ziemlich oft nenne.
Zusätzliche Frage: Hat Inlining einen Einfluss auf die Antwort auf meine Frage?
Die meiste Zeit sollte es keine Wirkung. Aber das Profiling für einen bestimmten Fall wäre gut. Ich übergebe primitive Typen nach Werten und Objekten durch const Referenz. Inlining sollte nichts ändern. –
Es ist wichtig zu verstehen, dass sie nicht das Gleiche sind (siehe http://stackoverflow.com/questions/4705593/int-vs-const-int zB). Wählen Sie diejenige aus, die Ihren Anforderungen entspricht - wenn die Übergabe an einen Wert ausreichend ist, dann tun Sie dies - wenn eine Weitergabe als Referenz erforderlich ist, tun Sie dies. –