java - 速度 : four ints or one int with many operations

标签 java performance variables int bit-manipulation

我有一个关于 Java 的速度问题。我正在制作一个国际象棋程序,我想检查使用一个 int 作为变量来存储四个 int 变量是否是个好主意,其中的值范围为1 到 4 位。

问题是我经常需要提取和放入变量的新部分,因此这将花费相当多的按位运算。

代码:

int fromX = 4, fromY = 5, toX = 6, toY = 7;
int move = 0
move |= toY;
move = move << 4;
move |= toX;
move = move << 4;
move |= fromY;
move = move << 4;
move |= fromX;

doWork(move);

int fromX = 4, fromY = 5, toX = 6, toY = 7;
doWork(fromX, fromY, toX, toY);

doWork() 将对坐标做很多不同的事情,主要是从“int”中提取它们,或者只使用变量。

我应该使用哪个?

最佳答案

I want to check if is a good idea to use one 'unsigned int' as a variable to store four 'int' variables

不,出于多种原因,这是一个坏主意™。

  1. 这会非常低效

  2. 很难阅读

  3. (因此)很难调试

当然,它可能会在这里和那里节省几个字节,但老实说,这些天我以千兆字节购买我的 RAM 模块。

我的建议:

编写您的整个国际象棋程序。 如果您遇到性能问题,请剖析程序以查看瓶颈在哪里,然后采取措施解决这些问题。 (我可以向您保证,一旦达到这一点,您就不会开始将多个数字打包到 int 中。)

关于java - 速度 : four ints or one int with many operations,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7792016/

相关文章:

Java 无法在未调用 Looper.prepare() 的线程内创建处理程序

python - 第二次调用函数,仅进行微小的更改

python - 如何在 Python 中打印后在两个变量之间添加空格

java - java中不正确的变量更改

java - 将数字转换为罗马数字?

java - 覆盖 Hibernate 注解

java - 如何使用自动证书管理在 Heroku 上强制使用 Jetty Embedded HTTPS

performance - 为什么在 Internet Explorer 中随着内存使用量的增加页面会变慢

mysql - 优化属性值数据库中的 Mysql 查询

performance - 为什么我的hgweb服务器这么慢?