我不太熟悉低级(硬件关闭)细节(忘记了很多)。
我的应用需要在很短的时间内执行数百万(甚至更多)位操作操作,因此性能很重要。
我需要检查 int
值的某个部分(由 4、5 或 6 位组成)是否等于指定值。
我可以通过使用 int
作为完整掩码来解决这个问题;或者通过使用位移位(以消除干扰部分),然后进行直接比较(==)。这些具有相同的性能吗?哪个更快?
最佳答案
一般来说 ((a & b )== c) 应该非常快,并且比相同的操作更快 有一个额外的类次。 ((a>>n)&b)==c)
其他优化技术(例如循环展开)可能比尝试猜测哪些移位和掩码操作最快更有效。
如果您确实关心该级别的性能,答案就是对实际部署环境中所有可能的变化进行基准测试。
关于java - 位操作性能: masking or shifting,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12751699/