Referenz initialisieren oder Wert übergeben (Update-Performance eines Spiels)



  • Würde es sich lohnen, wenn ich z.B. meinen Spieler mit einer Referenz der frame-Zeit initialisieren würde, anstatt dass ich diese jedes Mal beim updaten übergebe, und mir somit das tausendfache Kopieren pro Sekunde sparen würde?

    Referenz:

    class Player {
    
    Player(float& elapsedTime) : elapsedTime(elapsedTime) {}
    
    void update() {
    //irgendwas mit elapsedTime machen
    }
    
    };
    

    oder

    Wert:

    class Player {
    
    void update(float elapsedTime) {
    //irgendwas mit elapsedTime machen
    }
    
    };
    

    Im Game-Loop wird dann mit oder ohne Übergabe geupdatet.
    Falls das besser ist, sollte ich dann überhaupt nichts übergeben und nur noch per Referenz updaten?

    Hoffe ich könnt mir was dazu schreiben, danke.



  • Wenn du auf die Referenz zugreifst, hast du eine Indirektion mehr, was das wieder langsamer macht. Keine Ahnung, was im Endeffekt schneller wäre. Müsste man im konkreten Fall ausprobieren, dann von vielen Faktoren abhängen, vor allem, welche Variante Cache freundlicher ist. Ist aber sehr wahrscheinlich völlig irrelevant.


  • Mod

    Das ist wirklich belanglos.
    Die Zeitfresser werden an ganz anderen Stellen liegen.



  • Vielen Dank euch beiden, scheint dann wohl eher eine Design-Frage zu sein 🙂


Log in to reply