-6ren">
gpt4 book ai didi

java - 什么功能效率更高?

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

我是 Java 新手,我想知道这两个函数之间是否有区别:

public static String function1(int x) {
String res = "";
if(x > 10)
res = "a";
else
res = "b";

return res;
}

和:

public static String function2(int x) {
if(x > 10)
return "a";

return "b";
}

我不是在谈论代码的长度,只是在谈论效率。

最佳答案

第二个版本理论上更高效,反编译为:

public static java.lang.String function1(int);
Code:
0: ldc #2 // String
2: astore_1
3: iload_0
4: bipush 10
6: if_icmple 12
9: ldc #3 // String a
11: areturn
12: ldc #4 // String b
14: areturn

而带有赋值的版本反编译为:

public static java.lang.String function1(int);
Code:
0: ldc #2 // String
2: astore_1
3: iload_0
4: bipush 10
6: if_icmple 15
9: ldc #3 // String a
11: astore_1
12: goto 18
15: ldc #4 // String b
17: astore_1
18: aload_1
19: areturn

可以看到附加变量已创建并返回。

但是实际上,实际运行时性能的差异应该可以忽略不计。 JIT 编译器(希望)会优化掉无用的变量,并且在任何情况下,除非代码根据您的分析器位于热代码路径中,否则这肯定会被视为过早优化。

关于java - 什么功能效率更高?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49539215/

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