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.
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.
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
@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