Java:创建一个新变量或多次执行相同的计算?

时间:2017-12-03 11:38:39

标签: java performance

我有这段代码:

// ...
if (result[1] / (abs ? res[0] : 1 > highest) {
    highest = result[1] / (abs ? res[0] : 1);
}

我想知道它是否应该创建一个变量以避免重复相同的计算:

// ...
double temp = result[1] / (abs ? res[0] : 1;
if (temp > highest) highest = temp;

哪个是最好的解决方案,而且一般情况下使用第一段代码和第二段时更好?

2 个答案:

答案 0 :(得分:3)

第二个更好:

1)它具有更好的性能。

2)它增加了代码的可读性。

3)当计算只发生一次时,它更容易调试。

4)第一个选项容易出错,因为复制计算时可能会出错。

答案 1 :(得分:2)

主要是为了避免重复相同的代码而消除重复计算;为了更好地使用CPU,重复相同的计算是遥远的第二步。

因此,绝对值得创建一个临时变量。

但是,在这种情况下,您可以使用Math.max

来避免显式创建它
highest = Math.max(highest, result[1] / (abs ? res[0] : 1));

此处,b的第二个参数max(double a, double b)用于代替临时变量。 expression参数的值设置在调用站点的参数变量中,并在max实现中用于决定返回值,最终决定赋值。