如何制作无分支代码?
与此答案相关:https://stackoverflow.com/a/11227902/4714970
在上面的答案中,提到了如何通过避免分支来避免分支预测失败。
用户通过替换以下内容来演示这一点:
if (data[c] >= 128)
{
sum += data[c];
}
跟:
int t = (data[c] - 128) >> 31;
sum += ~t & data[c];
这两者如何等效(对于特定的数据集,不是严格等效的)?
在类似情况下,我可以通过哪些一般方式做类似的事情?它是否总是通过使用 和 ?>>
~