如果我使用byte而不是int,我的循环迭代会更快吗?

时间:2013-10-22 13:16:52

标签: java

这段代码,

for (byte b = 0; b < 100; b++)
{
    //some code
}

运行速度比此代码快?

for (int b = 0; b < 100; b++)
{
    //some code
}

3 个答案:

答案 0 :(得分:17)

不,一点也不;如果有的话,它会更慢,因为底层硬件通常有使用本机“int”类型(32位二进制补码整数)的指令,但不能用于处理8位有符号字节。

答案 1 :(得分:7)

  

始终使用int数据类型作为循环索引变量,因为与使用字节或短数据类型相比,它是有效的。因为当我们使用byte或short数据类型作为循环索引变量时,它们涉及到int数据类型的隐式类型转换。

检查一下 http://www.precisejava.com/javaperf/j2se/Loops.htm

答案 2 :(得分:4)

优化代码的正确方法是对其进行分析和分析,以找到热点,即占用大部分时间的地方。这些可以是(通常是)数据库或网络操作,或者是对大量数据进行操作的不良算法。当找到热点时,可以进一步分析它们以找到使它们更快的方法(修改数据库查询,使用缓存等)。

优化不是决定是使用byte而不是int,还是使用StringBuilder而不是StringBuffer。这被称为微优化,这是毫无价值的。优化始终取决于上下文,并且不能使用一般的“使用X代替Y”或“始终执行Z”规则来执行。