When 'if' slows you down, avoid it
10 hours ago
- #benchmarking
- #cpu optimization
- #branchless programming
- Avoiding branch mispredictions is crucial for optimizing program speed on modern CPUs.
- Branchless programming techniques, like unconditional stores with conditional increments, can replace traditional conditional branches.
- A benchmark comparing branchless versus branched array filtering shows significant speed improvements with branchless code.
- Assembly analysis reveals branchless versions use instructions like 'cinc' or 'setle' instead of conditional jumps.
- Compilers often cannot automatically optimize branches due to unpredictable data patterns and memory safety concerns.
- Performance benefits of branchless code diminish when data fits within the branch predictor's history tables.
- Quicksort is cited as an algorithm well-suited to branchless programming.