Uebergabe als Referenz ab 4 Bytes.



  • Habe ich dem Zitat entnommen:

    C++-Programmierer setzen alles daran, nichts als Wert zu uebergeben, was eine Groesse von 4 Byte uebersteigt.

    Das behauptet ein Autor mit einem 386er-Computer aus einem C++-Buch alter Zeiten.

    Da die heutigen Prozessoren mittlerweile viel leistungsfaehiger sind als damalige 386er Modelle, wuerde mich interessieren, ab welcher Groesse ein Objekt es wert ist, von einem Programmierer als Referenz uebergeben zu werden.



  • naja, ich denke das hängt auch immer vom zusammenhang ab... so pauschal kann man das nicht sagen, dass man ab einer bestimmten größe per referenz übergibt... call by value macht halt eine kopie, klar das ist schlecht bei großen mengen (genau kann ichs dir jetzt auch nicht sagen bei den heutigen prozessoren), aber call by reference wendet man doch hauptsächlich dann an wenn man will, dass der originale wert geändert wird, oder zb wenn man aus einer methode mehrere werte zurückgeben will....
    also ist doch nicht wirklich die größe ein entscheidungsgrund für cbr, oder?



  • Ich würde mal behaupten: Wenn ein Objekt größer ist als sein Zeiger, geht es mit dem Zeiger schneller.

    Das Ganze ist aber bei den Standardobjekten so minimal, dass man es schon als Zeitverschwendung ansehen kann, sich über solche Sachen Gedanken zu machen.

    Anders ist es hingegen, wenn du ein großes Objekt hast (>1000 Bytes). Dann ist der Unterschied wohl größer (v.a. in einer Schleife). Ich habe aber keine Messergebnisse und das hier ist nur das, was ich mir denke.



  • CME386 schrieb:

    Ich würde mal behaupten: Wenn ein Objekt größer ist als sein Zeiger, geht es mit dem Zeiger schneller.

    Die Uebergabe vielleicht - aber vergiss nicht, dass es in der Funktion dann zu Dereferenzierungen kommen muss.

    Deshalb verwendet man meistens by const Reference wenn sizeof(T)>2*sizeof(void*), ansonsten call by value

    Natuerlich kann man das noch tunen - aber diese Regel liefert recht ordentliche Ergebnisse.


Anmelden zum Antworten