Optimierung der Verwendung von Argumenten innerhalb einer Funktion

9

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?

    
Kestemont Max 03.10.2016, 15:01
quelle

1 Antwort

0

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.

    
Malcolm McLean 03.10.2016, 15:41
quelle

Tags und Links