In every programming language there are sets of opcodes that are recommended over others. I've tried to list them here, in order of speed.
- Integer Addition / Subtraction
- Integer Multiplication / Division
- Control flow
- Float Addition / Subtraction
- Float Multiplication / Division
Where you need high-performance code, C++ can be hand optimized in assembly, to use SIMD instructions or more efficient control flow, data types, etc. So I'm trying to understand if the data type (int32 / float32 / float64) or the operation used (
&) affects performance at the CPU level.
- Is a single multiply slower on the CPU than an addition?
- In MCU theory you learn that speed of opcodes is determined by the number of CPU cycles it takes to execute. So does it mean that multiply takes 4 cycles and add takes 2?
- Exactly what are the speed characteristics of the basic math and control flow opcodes?
- If two opcodes take the same number of cycles to execute, then both can be used interchangeably without any performance gain / loss?
- Any other technical details you can share regarding x86 CPU performance is appreciated