【发布时间】:2020-01-14 11:21:13
【问题描述】:
运行时有什么不同吗? 如果有,为什么会这样?
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;
}
谢谢!
【问题讨论】:
-
在几乎所有情况下,不;如果有任何差异,则可以忽略不计。 JIT 可以优化差异。选择你认为最易读的那个。
-
你也可以用
n*(n+1)-n代替循环。 -
@Someprogrammerdude 您可能看不到任何差异,或者结果将不正确。您可能知道这一点,但您的评论可能具有误导性。 How do I write a correct micro-benchmark in Java?
-
应该有一点不同,因为你调用一个总是需要一些时间的新方法(方法堆栈),但是将你的代码分成许多小的和逻辑的方法有助于你有一个更干净的代码。测试小方法也更容易。
-
谢谢你们!这些代码只是示例。我只是想知道如果我调用一个新方法来编写更简洁的代码而不是将一堆代码放在一个循环中,那么运行时是否存在巨大差异。我想那没关系
标签: java algorithm performance runtime