0

我不太熟悉低级(硬件关闭)细节(忘记了很多)。

我的应用程序需要在很短的时间内执行数百万(甚至更多)位操作操作,因此性能很重要。

我需要检查某个值的某个部分(由 4、5 或 6 位组成)int是否等于指定值。

我可以通过使用int一个完整的掩码来解决这个问题;或通过使用位移(以摆脱令人不安的部分),然后进行直接比较(==)。这些是否具有相同的性能?哪个更快?

4

1 回答 1

3

一般来说 ((a & b )== c) 应该非常快,并且比具有额外移位的相同操作更快。((a>>n)&b)==c)

其他优化技术(例如循环展开)可能比尝试猜测哪些移位和掩码操作最快更有效。

如果您真的关心该级别的性能,答案是对实际部署环境中所有可能的变化进行基准测试。

于 2012-10-05T19:27:18.837 回答