Java:if、switch或问号双点
Java: if, switch or question mark double point
以下哪种方法最快?
int i;
String s;
1。如果否则
if(i == 0)
s = "Case A"
else if(i == 1)
s = "Case B"
else
s = "Case C"
2。切换
switch(i) {
case 0:
s = "Case A"; break;
case 1:
s = "Case B"; break;
default:
s = "Case C"; break;
}
3。 ?和:
s = (i == 0 ? "Case A" : (i == 1 ? "Case B" : "Case C"))
另外,方法一和方法三编译后的输出是一样的吗?
这取决于您有多少 if/else 语句。一般的经验法则是,如果您有三个以上的 if/else 语句,则 switch 会更快。不过,这仅适用于一般情况,如果第一个 if 在 95% 的时间内为真,则不再为真。
如果我没记错的话,你的第一个和第三个案例应该花费相同的时间。我认为它们编译成完全相同的东西。
Switch
比 if-else
快.. if-else
的性能大约等于 ternary
的性能。所以,逻辑上 switch
比所有的都快。
Visit 找到像你这样的人进行的原始比较和类似测试!
最好担心相关代码的可读性和可维护性。如果有两个以上的 if/else 块备份在一起或者如果它的大小不可预测,那么您可能希望选择 switch
语句。
查看你的代码 ,使用任何现代编译器,所有上述条件都会编译成相同的指令。关注代码的可读性和可维护性。它们对性能的影响可以忽略不计
你可以在不能使用 if-else 或 switch 的地方使用三元,例如
System.out.println ("Good morning " + (p.female) ? "Miss " : "Mister " + p.getName ());
关注可读性和可维护性。当您开始处理大型代码库时,怎么强调都不过分。
但是假设你有更多的条件,那么 switch 将是首选,因为它会更简洁、可读性更强,而且性能更好
在此处查看此 link- http://www.blackwasp.co.uk/SpeedTestIfElseSwitch.aspx
以下哪种方法最快?
int i;
String s;
1。如果否则
if(i == 0)
s = "Case A"
else if(i == 1)
s = "Case B"
else
s = "Case C"
2。切换
switch(i) {
case 0:
s = "Case A"; break;
case 1:
s = "Case B"; break;
default:
s = "Case C"; break;
}
3。 ?和:
s = (i == 0 ? "Case A" : (i == 1 ? "Case B" : "Case C"))
另外,方法一和方法三编译后的输出是一样的吗?
这取决于您有多少 if/else 语句。一般的经验法则是,如果您有三个以上的 if/else 语句,则 switch 会更快。不过,这仅适用于一般情况,如果第一个 if 在 95% 的时间内为真,则不再为真。
如果我没记错的话,你的第一个和第三个案例应该花费相同的时间。我认为它们编译成完全相同的东西。
Switch
比 if-else
快.. if-else
的性能大约等于 ternary
的性能。所以,逻辑上 switch
比所有的都快。
Visit 找到像你这样的人进行的原始比较和类似测试!
最好担心相关代码的可读性和可维护性。如果有两个以上的 if/else 块备份在一起或者如果它的大小不可预测,那么您可能希望选择 switch
语句。
查看你的代码 ,使用任何现代编译器,所有上述条件都会编译成相同的指令。关注代码的可读性和可维护性。它们对性能的影响可以忽略不计
你可以在不能使用 if-else 或 switch 的地方使用三元,例如
System.out.println ("Good morning " + (p.female) ? "Miss " : "Mister " + p.getName ());
关注可读性和可维护性。当您开始处理大型代码库时,怎么强调都不过分。
但是假设你有更多的条件,那么 switch 将是首选,因为它会更简洁、可读性更强,而且性能更好
在此处查看此 link- http://www.blackwasp.co.uk/SpeedTestIfElseSwitch.aspx