Java 回路差异

Java 回路差异,java,Java,在Java中,两个循环在计时方面是否存在差异: for (int i=1; i<11; ++i) { // do stuff } 对于(int i=1;i第二个循环将比第一个多运行1次。第二个循环将比第一个多运行1次。第二个循环将比第一个多执行一次,因为111-100=11和11-1=10 如果你使用 for (int i=101; i<111; ++i) { // do stuff } 部分代码。第二个循环将比第一个循环执行多一次,因为111-100=11和11-1=1

在Java中,两个循环在计时方面是否存在差异:

for (int i=1; i<11; ++i)
{
  // do stuff
}

对于(int i=1;i第二个循环将比第一个多运行1次。

第二个循环将比第一个多运行1次。

第二个循环将比第一个多执行一次,因为111-100=11和11-1=10

如果你使用

for (int i=101; i<111; ++i)
{
  // do stuff
}

部分代码。

第二个循环将比第一个循环执行多一次,因为111-100=11和11-1=10

如果你使用

for (int i=101; i<111; ++i)
{
  // do stuff
}
部分代码。

字节码中至少有一个(微)差异:

i=1
将被翻译为
ICONST_1
,而
i=100
导致
BIPUSH 100

第一个是单个操作码,而第二个是一个操作码,后跟一个字节,必须加载该字节并将其符号扩展到32位。第一个操作码通常比第二个操作码更有效,但我认为与整个循环相比,差异将是微不足道的(
//do stuf

对于(int i=100;i的第二个(
),字节码中至少有一个(微)差异:

i=1
将被翻译为
ICONST_1
,而
i=100
导致
BIPUSH 100

第一个是单个操作码,而第二个是一个操作码,后跟一个字节,必须加载该字节并将其符号扩展到32位。第一个操作码通常比第二个操作码更有效,但我认为与整个循环相比,差异将是微不足道的(
//do stuf


第二个(
对于(int i=100;我也一样,
i
的值会不同;-)@Victor:true但OP谈论的是计时:)第二个实例中的差异相当于第一个实例中的0到11。另外,
i
的值也会不同;-)@Victor:true但OP谈论的是计时:)第二个实例中的差异相当于第一个实例中的0到11。通过设置位可以节省一些能量;)@Jigar Joshi,off和on位可能消耗相同的能量。它改变了使用能量最多的位元@苏雷什:我想我对微优化不是很熟悉。。。你能详细说明一下吗?请忽略两个循环中1的差异。。。我的错。。。我的意思是:对于int i=101;iIt将通过设置位来节省一些能量;)@Jigar Joshi,断断续续的钻头很可能消耗相同的能量。它改变了使用能量最多的位元@苏雷什:我想我对微优化不是很熟悉。。。你能详细说明一下吗?请忽略两个循环中1的差异。。。我的错。。。我的意思是:对于int i=101;我
// do stuff
for (int i=1; i<11; ++i)
{
  // do stuff with  (i + 100)
}