Addition mit negativen Zahlen soll angeblich schneller sein als Subtraktion.
Nicht die Maschinenbefehle auf x86/x64, die sind exakt gleich schnell.
"int" wird schneller verarbeitet als andere typen.
Ne, das ist so gesagt nicht richtig. Jedenfalls nicht auf x86 oder gar x64. Inbesondere ist int heutzutage nicht mehr der Typ der Arichtekturbreite. Siehe x64.
Dort werden alle Integertypen prinzipiell gleich schnell verarbeitet. Auf x64 sogar ja auch noch 64 Bit Integer.
Die typischen Operationen, alles Bitweise, Addition, Subtraktion Multiplikation ist dort ~ gleich schnell in allen Breiten. Einzig und allein bei der Division sind in der Regel bei kleineren Typen deutlich schneller.
"double" wird schneller verabeitet als "float".
Das "
double" schneller ist als "
float" stimmt auch nicht. Tatsächlich ist hier der theoretische Unterschied wenn man die Befehle auch in der Regel sehr gering und in der Regel nicht beachtenswert. Auf der veralteten x87 FPU gibt es sogar intern nur einen einzigen 80 Bit breiten Typ mit dem gerechnet werden kann. Zu einem größeren Unterschied kommt es dagegen zum Beispiel dann, wenn die Auto-Vektorisierung einspringt. "double" ist wie der Name sagt doppelt so groß und nimmt daher doppelt soviel Platz in den 128 Bit SSE Registern weg. Das heißt dort ist der Durchsatz bei "
double" prinzipiell halbiert weil dort nur 2 Operationen anstatt 4 gleichzeitig ausgeführt werden können.
Außerdem ist je nach Anwendung außerhalb von Mikrobenchmarks aber noch etwas anderes viel limitierender: Der Cache. Große Typen also zum Beispiel "double" nehmen, wenn sie dauerhaft in einer Datenstruktur gespeichert werden dauerhaft Cache weg. Und das doppelt so viel und das wird in den aller meisten Fällen viel schwerer wiegen als alles andere. Das Gleiche trifft natürlich auch bei 64 Bit Integer vs extrem Beispiel 8 Bit zu.
Prinzipiell meine zusätzlichen Optimierungstipps für x86/x64 in extremer Kürze:
Datenstruktur, Parallelisierung, Cacheoptimierungen(Allokationen, Datenorientierung, passende Typen...), Funktionszeiger("
virtual")/Verzweigungen vermeiden("Conditional Move"), ggf. manuelle Vektorisierung(SIMD), ...
Daneben natürlich profilen und beim Testen wirklich gewissenhaft sein. Da gibt es extrem viele Dinge die man falsch machen kann und das Ergebnis verfälschen oder nicht vergleichbar machen. Das habe ich selbst sehr häufig erfahren müssen.
Und ja, das geht langsam richtig Offtopic weil ich immer noch nicht glaube, dass es hier um so ein Problem handelt. Wenn hier so Unwissen verbreitet wird, kann ich das schwer ignorieren.