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

5 java

这个代码,

for (byte b = 0; b < 100; b++)
{
    //some code
}
Run Code Online (Sandbox Code Playgroud)


比这段代码跑得快?

for (int b = 0; b < 100; b++)
{
    //some code
}
Run Code Online (Sandbox Code Playgroud)

Ern*_*ill 18

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

  • 不仅底层硬件,甚至Java字节码本身都有一个主要用于`int`的指令集.在`for`循环中使用`int`意味着单个`iinc`指令将执行循环的增量,但是当使用`byte`四个指令序列`iload`,`iconst_1`,`iadd`,`i2b`时,`istore`是必需的. (4认同)

Bha*_*h R 7

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

请查看 http://www.precisejava.com/javaperf/j2se/Loops.htm

  • 好点+1.但是当你从其他链接粘贴时,引用它们.我现在就这样做了. (3认同)