Einzelnen Beitrag anzeigen

Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#4

AW: Enormer Performanceunterschied zwischen 32 und 64 Bit?

  Alt 1. Nov 2014, 01:01
Benutze momentan ausschließlich statischen Speicher (bzw. einen Vector, welcher aber nur einmalig alloziiert wird), deshalb denke ich nicht, dass dieser enorme Boost mit geringerer Speicherfragmentierung zu erklären ist.
Spezialinstruktionen kann ich ebenfalls zu 99% ausschließen. Sah auf den ersten Blick in IDA zumindest alles recht ähnlich aus und die selben AVX Instructions, die ich bei der 64 Bit Version finden konnte, existierten meistens auch beim 32 Bit Kompilat.

Hatte den Verdacht, dass es daran liegt, dass ich viele 64 bit Integer verwende (auch unter 32 Bit), aber laut Stackoverflow macht das von der Performance her keinen allzu drastischen unterschied (Addition war glaube ich 2 statt 1 Instruktion, etc).
Könnte mir schon vorstellen, dass das einen ziemlichen Unterschied macht, nicht nur wegen weniger Instruktionen, sondern auch weil ein Int64 unter 64 Bit genau in ein Register passt. Ich weiß nicht, ob unter 32 Bit der Compiler überhaupt in der Lage ist, 64 Bit-Integer in Registern zu speichern, oder ob sich dort dann alles zwangsweise auf dem langsameren Stack abspielt (und höchstens mal eine Hälfte für Zwischenberechnungen in ein Register geladen wird). Aber so oder so bleiben natürlich unter 64 Bit dadurch viel mehr freie Register übrig, die entsprechend genutzt werden können. Dazu kommen dann noch obendrauf nochmal die zusätzlichen 8 Register.

Edit:
Du könntest ja mal valgrind drauf loslassen. Soweit ich weiß kann man sich da auch Statistiken zur CPU-Cache-Effizienz und ähnlichem Low-Level-Kram ausgeben lassen.

Geändert von Namenloser ( 1. Nov 2014 um 01:08 Uhr)
  Mit Zitat antworten Zitat