Was ist besser? Return oder Referenz?
-
da hat keiner geantwortet, weil es keiner antwort bedarf. in deinem beispiel ist die version mit ref natürlich schneller. aber du vergleichst ja auch eine funktion mit zwei funktionen.
-
Wenn GetMouseX() und GetMouseY() inline sind kann sich das aufheben.
class DIMouse { public: void Update (); // updated keystatus inline int GetX() const { return mousex; } inline int GetY() const { return mousey; } };MfG SideWinder
-
Mhm...
Also wenn die Funktion inline ist, wird nicht gesprungen?
MfG
-
Frag0r schrieb:
Mhm...
Also wenn die Funktion inline ist, wird nicht gesprungen?
MfG
ja, inline aufrufe werden mit dem entsprechenden funktions-inhalt ersetzt.
-
Ok danke.
-
Ach... aber sollte die Funktion nicht eine Referenz darstellen? Ist doch schneller oder?
class DIMouse { public: void Update (); // updated keystatus inline int& GetX() const { return mousex; } inline int& GetY() const { return mousey; } };
-
nö. eher langsamer, weil die refrenz (als zeiger implementiert) 4 bytes groß ist und der inst auch nur 4 bytes groß ist. da kann man gleich den int rauskopieren (üblicherweise im register eax). nen int als ref zurückgeben ist entweder langsamer als ihn zu kopieren, oder der optimierer ist so gut, daß er den unfug bemerkt und wegoptimiert.
-
Ich dachte eine Referenz ist kein eigenes Objekt?
-
Ich dachte eine Referenz ist kein eigenes Objekt?
intern passiert durch die referenz ja nichts anderes, als wuerdest du einen zeiger zurueckgeben. du setzt also voraus, dass ein objekt existiert.
bei einer einfachen zahl (die im register liegt), bedeutet die referenz erstmal ablegen im speicher, uebergabe des zeigers und wiederauslesen des speichers.
aber bei einer funktion die du vielleicht maximal 100x pro sekunde aufrufst ist es sowieso vollkommen irrelevant ob du dabei 10 zyklen verschwendest oder nicht.
-
Ab welcher "Groesse" von built-in Typen und eigenen Klassen lohnt es sich denn, eine Referenz zurückzugeben? (Angenommen in einer häufig benutzen Funktion)
-
Aha!
Also bei "Mini"-Funktionen keine Referenz, da das kopieren dieser kleinen Zahl schneller ist?