【问题标题】:Performance of java if-else with return statement [duplicate]java if-else与return语句的性能[重复]
【发布时间】:2017-12-04 07:46:24
【问题描述】:
private String getString1(int n){

    if (n == 0) {
        return "ZERO";
    }
    if (n == 1) {
        return "ONE";
    }
    if(n == 2) {
        return "TWO";
    }
    return "-NA-";
}

private String getString2(int n){

    if (n == 0) {
        return "ZERO";
    } else if (n == 1) {
        return "ONE";
    } else if(n == 2) {
        return "TWO";
    } else
        return "-NA-";
}

我有上述方法getString1(int) 和getString2(int)。两者都会给出相同的 o/p。 但是哪一种是最有效的使用方式?在性能方面有什么不同吗?

【问题讨论】:

  • 不,没有。不要再担心这些琐碎细节的性能了。使用你认为最易读的那个。
  • 改用switch statement
  • 问问自己“如果输入为零,需要做多少检查?”对于所有其他输入,依此类推。如果您对两个示例都这样做,您会看到检查次数相同,因此性能相同。

标签: java performance if-statement


【解决方案1】:

就 cpu 时间而言 - 没有差异。无论如何,编译器可能会将它们优化为完全相同的字节码。

就技术债务而言 - 只要真正的开发人员查看此代码并将其替换为:

private static final String[] numbers = {"ZERO", "ONE", "TWO"};

private String getString(int n) {
    return n >= 0 && n < numbers.length? numbers[n]:"-NA-");
}

你刚刚花了你公司的钱。

【讨论】: