In einem Interviewtest für den folgenden Code:
%Vor%Der Interviewer schrieb den folgenden Kommentar:
Wenn Sie den Wert mit out-Argument zurückgeben, verwenden Sie nicht die Argumente Innerhalb der Funktion schreibt der Compiler im Allgemeinen die Variablen in den Speicher und lesen Sie es direkt aus dem Speicher. Verwenden Sie einen lokalen Stapel Variable, dies ermöglicht dem Compiler, besser zu optimieren und nur zu schreiben Die Daten werden gespeichert, wenn sie unbedingt benötigt werden.
Ich habe nie von der Tatsache gehört, dass ich die Verwendung von Referenzparametern in der Funktion vermeiden sollte. Ist das eine gängige Praxis, wenn Sie C ++ oder eine wirklich spezifische Optimierung durchführen? Und wenn ja, gibt es eine bestimmte Dokumentation, die ich lesen könnte, die diesen Fall abdecken würde?
Er hat recht, aber es ist sehr viel eine Mikrooptimierung. Wenn sich die Verweise auf lokale Variablen beziehen, befinden sie sich sowieso sehr nahe im Stapel und wahrscheinlich noch im Cache, aber sie könnten Verweise auf entferntes Heap-Objekt sein.
Tatsächlich sollten Sie Zeiger anstelle von Referenzen für Rückgaben verwenden, damit der Aufrufer sofort sehen kann, dass der Wert wahrscheinlich in den Wert geschrieben wird. Und es ist sinnvoll, null zuzulassen, wenn der Aufrufer die Werte verwerfen möchte. So erstellen Sie natürlich zwei Provisorien, dann schützen Sie bei der Funktion exit den Zeiger mit Tests für null.
Tags und Links c++