大整数值会导致c ++的性能下降?

时间:2011-04-23 06:41:53

标签: c++ optimization

我正在制作自制的棋盘游戏(当然是电脑棋盘游戏)。作为游戏的一部分,我对棋盘上的每个单位都有一个实力值。其中一个单位是特殊的,几乎没有权力。我想用整数最大值表示这个(强度是一个int var)。

我的问题是这个值正在被比较很多(很多!),所以我发现自己在问,是int max val还是比100更差(与其他单位相比也转化为无限制) )。

换句话说,这个代码可以:

this->_strength == other->_strength;

受_strength值影响(关于速度)(在完全编译器,OS和硬件特定优化下)。

P.S,这是关于整数优化的理论问题,然后是关于我的游戏的实用问题,这就是为什么我不打扰它的细节。

4 个答案:

答案 0 :(得分:3)

没有。比较相同类型的两个整数的速度唯一可能的事情是它们在内存中的大小与处理器的字大小相比(换句话说,处理器如何加载整数来进行比较)。整数的实际值对比较的速度绝对没有影响。

答案 1 :(得分:3)

只要你坚持最大值,没有。在您可能使用的大多数硬件架构上进行整数比较,将在整个字上按位并行执行该比较,并执行一条指令。

现在,如果你碰巧在COBOL中使用像COMP-3这样的压缩十进制表示,它可以。

答案 2 :(得分:2)

每个int变量占用相同的内存量(通常是32位机器中的32位)。其中的实际值对分配给它的位数没有影响。因此,值为0的int与具有值2 ^ 31-1的int具有相同的效果。

答案 3 :(得分:1)

看起来是Performance of 32-bit integers in a 64-bit environment (C++)

所熟悉的典型的过早优化问题

我相信你没有任何机会在如此小规模的项目中遇到任何潜在的低级别操作性能问题。