mschnell hat geschrieben:
Jetzt ist die Frage, warum das so ist, und (weil es doch peinlich für die FPC/Lazarus Community ist, das so ein Ergebnis dort zu sehen ist) ob wir was dagegen tun können.
Der just in time Compiler kann den Code auf den tatsächlich angetroffenen Prozessor optimieren. Da FPC Programme auf einer ganzen Familie von Prozessoren laufen sollen, darf FPC die Optimierung nicht so aggressiv vornehmen.
Ich habe gelesen, dass FPC die zusätzlichen X64 Register nicht optimal ausnützt. Da 64Bit Code die Cache-Haltung und die Datenbusse stärker belastet, kann es tatsächlich vorkommen, dass 64Bit FPC-Programme auf dem gleichen Prozessor langsamer laufen als das 32Bit Äquivalent.
Das Argument, dass durch die 64Bit breiten Register schneller gerechnet wereden kann, trifft nur in Spezialfällen zu, da übliche Programme gar keinen so grossen Wertebereich für die Variablen brauchen. Für Boolean wird beispielsweise lediglich ein Bit benötigt.
Tun können "wir" dagegen vermutlich nichts, da die Implementierung von besseren Optimierungsalgorithmen in den Compiler absolute Spezialistenarbeit ist.
Martin