Java for循环性能

ped*_*dja 6 java performance

什么是更好的for循环

这个:

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

要么:

int a = someMethod();
for(int i = 0; i<a; i++)
{//some code
 }
Run Code Online (Sandbox Code Playgroud)

我们只是说someMethod()返回一些大的东西.

第一种方法将执行的someMethod()中的每个环因而降低速度,第二速度更快,但是,让我们说,有很多应用类似环路所以声明的一个可变VILL消耗更多的存储器.

那么更好,或者我只是愚蠢地思考.

ami*_*mit 11

第二个更好 - 假设someMethod()没有副作用.
它实际上缓存了由someMethod()- 计算的值- 因此您不必重新计算它(假设它是一个相对广泛的操作).

如果它(有副作用) - 两个代码捕捉不相等 - 你应该做正确的事情.

关于"变量a的大小" - 无论如何都不是问题,在计算之前需要将返回someMethod()存储在某个中间临时变量上(即使不是这种情况,一个整数的大小也可以忽略不计) ).

PS
在某些情况下,编译器/ JIT优化器可能会将第一个代码优化为第二个代码,假设当然没有副作用.