Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如果我使用byte而不是int,循环的迭代速度会更快吗?_Java - Fatal编程技术网

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

Java 如果我使用byte而不是int,循环的迭代速度会更快吗?,java,Java,这个代码 for (byte b = 0; b < 100; b++) { //some code } for(字节b=0;b

这个代码

for (byte b = 0; b < 100; b++)
{
    //some code
}
for(字节b=0;b<100;b++)
{
//一些代码
}

运行速度是否比此代码快

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

不,一点也不;如果有什么区别的话,它的速度会慢一些,因为底层硬件通常都有使用本机“int”类型(32位2的补码整数)的指令,但没有使用8位有符号字节的指令

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

检查这个

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


优化不是决定是否使用
byte
而不是
int
,或者是否使用
StringBuilder
而不是
StringBuffer
。这就是所谓的微观优化,毫无价值。优化始终依赖于上下文,不能使用常规的“使用X代替Y”或“始终执行Z”规则执行。

测量时间并检查它。我想这比在这里发帖要快。重复问题:答案是一个大大的否。@reinder这不是重复的问题。这要求内存不足,这要求速度。好点+1。但是,当您从其他链接粘贴时,请引用它们。我现在就这么做了。这个建议毫无价值,因为JIT肯定会将循环编译成一种有效的形式。对于Android系统来说,也是一样的?不仅是底层硬件,甚至Java字节码本身都有一个主要用于
int
的指令集。在
for
循环中使用
int
意味着单个
iinc
指令将执行循环的增量操作,但当使用
字节时,使用四个指令序列
iload
iconst\u 1
iadd
i2b
istore
是必需的。我用System.nanoTime()计算了时差,结果两边都有偏差,顺便说一句,你刚才的回答赢得了一个粉丝。我说的是“四”吗?甚至五条指令;-)