速度:四个整数或一个具有许多操作的整数

Hid*_*dde 1 java variables int performance 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);
Run Code Online (Sandbox Code Playgroud)

要么

int fromX = 4, fromY = 5, toX = 6, toY = 7;
doWork(fromX, fromY, toX, toY);
Run Code Online (Sandbox Code Playgroud)

doWork() 将使用坐标做很多不同的事情,大多从'int'中提取它们,或者只使用变量.

我应该使用哪个?

aio*_*obe 7

我想检查一个'unsigned int'作为变量存储四个'int'变量是否是个好主意

不,这是一个坏主意 ™,原因有很多.

  1. 这将是非常低效的

  2. 很难

  3. (因此)非常难以调试

当然,它可以在这里和那里节省几个字节,但说实话,我现在以千兆字节购买我的RAM模块.

我的建议:

写下你的整个国际象棋程序.如果您遇到性能问题,个人资料的程序,看看那里的瓶颈是,并做一些关于这些.(我可以向您保证,int一旦达到这一点,您就不会开始将多个数字打包成.)

  • 非常好的答案.我同意每个字.我只想补充一点,问题是过早优化的经典例子. (2认同)