gpt4 book ai didi

algorithm - 重写 if 语句以避免分支是否值得?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:05:38 24 4
gpt4 key购买 nike

最近我意识到我一直在做太多的分支而不关心它对性能的负面影响,因此我下定决心要尝试学习所有关于不分支的知识。这里有一个更极端的例子,试图让代码有尽可能少的分支。

因此代码

if(expression) 
A = C; //A and C have to be the same type here obviously

表达式可以是 A == B 或 Q<=B,它可以是任何解析为 true 或 false 的东西,或者我想根据这里的结果为 1 或 0 来考虑它

我想出了这个非分支版本

A += (expression)*(C-A);   //Edited with thanks

所以我的问题是,这是最大化效率的好解决方案吗?如果是,为什么?如果不是,为什么?

最佳答案

取决于编译器、指令集、优化器等。当您使用 bool 表达式作为 int 值时,例如 (A == B) * C ,编译器必须进行比较,并根据结果将某些寄存器设置为 0 或 1。除了分支之外,某些指令集可能没有任何方法可以做到这一点。一般来说,最好编写简单、直接的代码并让优化器解决,或者找到分支较少的不同算法。

关于algorithm - 重写 if 语句以避免分支是否值得?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16952193/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com