gpt4 book ai didi

java - 使用直接算术表达式和在运行时将值传递给方法有什么区别吗?

转载 作者:行者123 更新时间:2023-12-01 18:51:25 26 4
gpt4 key购买 nike

运行时有什么区别吗?如果有,为什么?

int pairSumSequence(int n) { 
int sum = 0;
for (int i = 0; i < n; i++){
sum += pairSum(i, i+1);
}
return sum;
}

int pairSum(int a, int b) {
return a + b;
}

对比

int pairSumSequence(int n) { 
int sum = 0;
for (int i = 0; i < n; i++){
sum += i + (i + 1); //2 * i + 1
}
return sum;
}

谢谢!

最佳答案

Is there any difference in runtime?

几乎不易察觉,这在很大程度上取决于可以进行的优化。编译器可能内联调用(将其替换为与您所做的等效表达式)。即使 JIT 编译器也可以做到这一点。

If there is, why is that?

和现实生活一模一样!当您评估第一种形式时,您必须跳转到函数,计算它,然后跳回调用点:这需要时间,而机器除了您之外什么也没有。你必须支付电话费。调用函数的成本并不是很高,因此对于许多应用程序来说它不会对性能产生严重影响;当然,如果您处于某个可能发生变化的特定领域,请将高计算任务视为预测、模拟等。

所以,总而言之,编写call形式,因为这会分解代码,从而产生更具可读性的代码,等等。如果可能的话,让编译器进行优化(编译器现在非常聪明)。我怀疑您需要自己进行优化。

关于java - 使用直接算术表达式和在运行时将值传递给方法有什么区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59732777/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com