Skip to content

Latest commit

 

History

History
12 lines (8 loc) · 555 Bytes

branchless-programming-in-cpp.org

File metadata and controls

12 lines (8 loc) · 555 Bytes

Branchless Programming in C++ - Fedor Pikus - CppCon 2021

https://youtu.be/g-WPhYREFjk?t=2489

对于 `if(x || y) {A} else {B}` 这样的分支判断来说,程序员和机器的视角是不同的,机器视角是

  • if x -> A
  • else if y -> A
  • else -> B

所以如果x, y本身没有特别好预测性的话,那么对于机器来说分支预测效果也不会太好。 branchless要求将 `z = x||y` 预先计算出来,然后使用 `if(z) {A} else {B}` 这样的方式来改写判断。

../images/branchless-programming-in-cpp-0.jpg