Leistung 32-Bit- vs. 64-Bit-Arithmetik

Lesezeit: 2 Minuten

Benutzeravatar von Cartesius00
Cartesius00

Sind einheimisch 64 bit ganzzahlige arithmetische Anweisungen langsamer als ihre 32 bit Gegenstücke (auf x86_64 Maschine mit 64 bit Betriebssystem)?

Edit: Auf aktuellen CPUs wie Intel Core2 Duo, i5/i7 etc.

  • @Cody: Ach wirklich? Sie behaupten, dass die 64-Bit-Ganzzahldivision so schnell ist wie die 32-Bit-Ganzzahldivision?

    – Ben Voigt

    20. Januar 2012 um 23:03 Uhr

  • Sie haben beide recht. Lesen Sie unten die Erklärung von David Schwartz. Das Ausführen einer Anweisung in der ALU der CPU ist eine Sache. Die Operanden in die CPU zu bekommen und das Ergebnis wieder aus der CPU zu bekommen, ist eine andere Sache.

    – paulsm4

    20. Januar 2012 um 23:07 Uhr

  • Verwandte: Die Vorteile der Verwendung von 32-Bit-Registern/Befehlen in x86-64

    – Peter Cordes

    2. Februar 2021 um 3:25 Uhr

  • Danke, aber mir ging es hier nur um CPU-Zyklen. Cache-Miss-Probleme und ähnliches sind absolut in Ordnung, aber das ist eine andere Geschichte.

    – Cartesius00

    20. Januar 2012 um 23:05 Uhr

  • Dann beantwortet mein erster Satz deine Frage. Aber mein wichtiger Punkt ist, dass es keine Rolle spielt. 64-Bit-Arithmetik wird nicht verwendet, wo 32-Bit-Arithmetik ausreichen würde. Daher sollte die relative Leistung niemals ein entscheidender Faktor bei einer Entscheidung sein.

    – David Schwartz

    20. Januar 2012 um 23:07 Uhr


  • Haben Sie konkrete Beispiele? Sagen wir mal auf Core2 Duo. Oder verlinken?

    – Cartesius00

    20. Januar 2012 um 23:08 Uhr

  • Siehe hierzu insbesondere Seite 47 Anweisungs-Timing-Tabelle.

    – David Schwartz

    20. Januar 2012 um 23:14 Uhr

  • Ich implementiere ein Multithread-Prime-Sieb und verwende ein Bitfeld, um die Ergebnisse darzustellen. Ich bin auf dieser Seite angekommen und habe mich gefragt, welche Größe von Ganzzahlen als zugrunde liegender Speicher verwendet werden soll, und bin ohne eine sinnvolle Antwort davongekommen. “Die relative Leistung sollte niemals ein entscheidender Faktor bei einer Entscheidung sein” ist in diesem speziellen Fall falsch. Ich habe mich für 32-Bit entschieden, um die Anzahl potenzieller Kollisionen beim Multi-Threading zu reduzieren und die Speicherbandbreite zu reduzieren. 64-Bit war jedoch möglicherweise effizienter, da ich auch Popcount- und Bitscan-Operationen verwende, um Ergebnisse zu iterieren/lokalisieren.

    – Jeff G

    29. Mai 2017 um 18:47 Uhr


  • Könnten Sie Zugang zu diesem speziellen Beispiel gewähren? Ich stecke derzeit im selben Dilemma (schwere AVX2-Vektorisierung etc.) und bin mir unsicher, ob es sich lohnt, zusätzlich auf die Art der Loop-Indizes zu achten.

    – étale-Kohomologie

    31. August 2016 um 22:40 Uhr

1387430cookie-checkLeistung 32-Bit- vs. 64-Bit-Arithmetik

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy