java - 位操作性能: masking or shifting

标签 java android bit-manipulation

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

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

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

我可以通过使用 int 作为完整掩码来解决这个问题;或者通过使用位移位(以消除干扰部分),然后进行直接比较(==)。这些具有相同的性能吗?哪个更快?

最佳答案

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

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

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

关于java - 位操作性能: masking or shifting,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12751699/

相关文章:

java - 构造函数不创建对象——Java

java - 绘制谢尔宾斯基三角形分形 - Java

android - 退出子 Activity 时如何完成所有 Activity

android - PhoneGap - 将数据保存到本地文件系统(文件 API)

Java HttpPost 到 php API

java - Checkmarx:在 Java 中使用 Mybatis resultMap 进行不正确的异常处理

c 按位运算来匹配描述

c - 钳制真实(固定/浮点)值的最快方法?

c# - 需要一个先升后降的快速函数,使用按位运算

java - 吃、睡和呼吸单元测试/TDD/BDD