Referenzen


  • Mod

    Das ergibt doch überhaupt keinen Sinn. Zugreifen musst du auf die Daten sowieso, daher sind sie doch Funktionsparameter. Daher sind Überlegungen zu Cachemisses (bei zusammenhängenden Daten vom Programmstack? lol) beim Zugriff völlig egal Entweder hast du sie beim Zugriff oder nicht, aber der Cache weiß ja nicht ob du die Daten willst um damit zu arbeiten oder um sie zu kopieren. Die Frage ist nur, ob die Zusatzkosten für ständige indirekte Zugriffe die Einmalkosten für eine lokale Kopie überwiegen, oder nicht.



  • @SeppJ sagte in Referenzen:

    Daher sind Überlegungen zu Cachemisses (bei zusammenhängenden Daten vom Programmstack? lol)

    Wenn man Referenzen übergibt, liegen nur die Referenzen auf dem Stack! Der Rest kann muss aber nicht auf dem Stack liegen.


  • Mod

    @john-0 sagte in Referenzen:

    @SeppJ sagte in Referenzen:

    Daher sind Überlegungen zu Cachemisses (bei zusammenhängenden Daten vom Programmstack? lol)

    Wenn man Referenzen übergibt, liegen nur die Referenzen auf dem Stack! Der Rest kann muss aber nicht auf dem Stack liegen.

    Du willst Heapobjekte per Kopie übergeben? Kann meinetwegen vorkommen. Aber du redest nach wie vor von Cachemisses auf Daten, die sowieso gelesen werden, ob kopiert oder nicht.



  • Ja, das Lesen der Daten sollte wörscht sein, auch das Schreiben auf den Stack. Was evtl. nicht ganz wörscht ist, ist dass man dadurch mehr Stack "heiss" und im Cache hält, wodurch weniger Platz für andere Daten im Cache ist.

    Ich bin mir ziemlich sicher dass das von Fall zu Fall ganz unterschiedlich ausgehen kann was schneller ist - auch bei Objekten die deutlich grösser als eine Stack-Line sind. Also wenn's wirklich auf Performance ankommt und das Objekt grösser als 1-2 Zeiger ist, lieber profilen.


Anmelden zum Antworten