【发布时间】:2013-10-21 14:23:57
【问题描述】:
- 您多久使用一次按位运算“hacks”来执行某种操作 优化?它在什么样的情况下真正有用?
示例:而不是使用 if:
if (data[c] >= 128) //in a loop
sum += data[c];
你写:
int t = (data[c] - 128) >> 31;
sum += ~t & data[c];
当然,假设它针对这种特定情况会产生相同的预期结果。
- 值得吗?我觉得不可读。你多久遇到一次
这?
注意:我在所选答案中看到了此代码:Why is processing a sorted array faster than an unsorted array?
【问题讨论】:
-
数组排序了吗?数据满足 if 语句的频率是多少? 50%、25%、75%?
-
在另一个问题中,排序使它更有效..但我问的是使用按位运算来做同样的优化而不排序或使用 if()..我更关心可读性以及是否是矫枉过正
-
视情况而定。 if 语句每秒使用 1,000,000 次吗? (夸张)在信号处理等处理能力会导致瓶颈的某些应用中,按位运算非常有用。
-
我很少做这样的事情,如果我做做这样的事情,我会大量评论它以包括它所做的正常可读版本以及原因优化。然而,几乎从不需要这样的优化。
标签: c optimization bit-manipulation conditional-statements