Einzelnen Beitrag anzeigen

Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.011 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#19

AW: RTTI: generische TObjectList erkennen

  Alt 5. Nov 2021, 12:17
Du weißt aber schon, wie moderne CPUs funktionieren oder? Das Ergebnis der Überprüfung ist immer gleich - hallo Sprungvorhersage und hallo spekulative Ausführung.
Das ist schon klar, allerdings hätte ich gedacht, dass auch dann Code mit zusätzlicher Umleitung wie hier nur vergleichbar schnell (weil das Ergebnis schon da ist, obwohl es länger gebraucht hat), aber kaum schneller werden kann.
Ja, das fällt dann eher in diese Kategorie:
das Inlining ginge irgendwo schief.
Und das geht beim Delphi Compiler oftmals schief in dem Sinne, dass zu viele Instructions gebaut und oftmals Register durch die Gegend auf den Stack und herunter spazieren gefahren werden.

In diesem speziellen Fall kann es außerdem sein, dass man Microbenchmarkabweichungen zwischen den beiden Methoden haben kann, die die Unterschiede erklären. Hierzu empfehle ich dieses Video: https://www.youtube.com/watch?v=koTf7u0v41o
Es kommt außerdem oftmals auch auf die CPU an, denn die machen inzwischen so fancy sachen wie "move elimination", bei denen manchmal das vom Compiler generierte Rumgegurke einfach wegfliegt, da die CPU sieht, dass es nur Hin- und Hergeschiebe ist.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight

Geändert von Stevie ( 5. Nov 2021 um 12:39 Uhr)
  Mit Zitat antworten Zitat