Betrachten Sie die folgenden:Do C++ - Compiler optimieren Pass by Const Referenz POD-Parameter in Kopie weitergeben?
struct Point {double x; double y;};
double complexComputation(const& Point p1, const Point& p2)
{
// p1 and p2 used frequently in computations
}
Sie Compiler den Pass-by-reference in Pass-by-Kopie optimieren häufige dereferenzierenden zu verhindern? Mit anderen Worten complexComputation
in diesen umwandeln:
double complexComputation(const& Point p1, const Point& p2)
{
double x1 = p1.x; double x2 = p2.x;
double y1 = p1.y; double y2 = p2.y;
// x1, x2, y1, y2 stored in registers and used frequently in computations
}
Seit Point ist ein POD kann es, indem Sie eine Kopie hinter dem Anrufer zurück, rechts keine Nebenwirkung sein?
Wenn das der Fall ist, dann kann ich POD-Objekte immer durch const-Verweis übergeben, egal wie klein, und muss nicht um die optimale Weitergabe Semantik kümmern. Recht?
EDIT: Ich interessiere mich speziell für den GCC-Compiler. Ich denke, ich muss vielleicht einen Testcode schreiben und mir den ASM ansehen.
Ich habe versucht, nach dieser Frage zu suchen, aber ich kam immer wieder mit Hits über die Abc's von Vorbeifahr-Wert, Pass-by-Reference, etc. Es tut mir leid, wenn es bereits diskutiert wurde. –
Normalerweise ist das Gegenteil ein besserer Ansatz (http://cpp-next.com/archive/2009/08/want-speed-pass-by-value/). Übergeben Sie nach Wert, und lassen Sie den Compiler es in Referenz umwandeln, wenn es will – jalf
+1 Gute Frage –