最近我意识到我做了太多的分支而不关心它对性能的负面影响,因此我下定决心尝试学习所有关于不分支的知识。这是一个更极端的情况,试图使代码具有尽可能少的分支。
因此对于代码
if(expression)
A = C; //A and C have to be the same type here obviously
表达式可以是 A == B 或 Q<=B,它可以是任何解析为真或假的东西,或者我想在这里的结果是 1 或 0 来考虑它
我想出了这个非分支版本
A += (expression)*(C-A); //Edited with thanks
所以我的问题是,这是一个最大化效率的好解决方案吗?如果是,为什么,如果不是,为什么?