1. 程式人生 > >問號表示式和if-else方式的對比

問號表示式和if-else方式的對比

某次聽數字影象的老師說到關於ifelse其實也是蠻消耗資源的,關鍵就在於,我們的編譯器在編譯的時候要去維護一張table。而問號表示式其實也可以和ifelse做替換的。無聊之下就想來瞧瞧。效率對比 :wink:
有啥缺陷,請指正。


//標準的ifelse方式
public static long standardIfElseTest(long L) {
if (L < 10)
return L * 100;
else
return L * 10;
}


//問號表示式
public static long ternaryIfElseTest(long L) {
return L < 10 ? L * 100 : L * 10;
}


//main方式測試一下
public static void main(String[] args) {
long start;
long end;
// 計算第一個方法執行時間:標準的if、else方式
start = System.currentTimeMillis();
System.out.println(start);
for (long i = 0; i < 1000000000; i++) {
standardIfElseTest(i);
}
end = System.currentTimeMillis();
System.out.println("standard if else:" + ((long) end - start));
// 重新計算第二個方法時間:問號表示式
start = System.currentTimeMillis();
System.out.println(start);
for (long i = 0; i < 1000000000; i++) {
ternaryIfElseTest(i);
}
end = System.currentTimeMillis();
System.out.println("question:" + ((long) end - start));
}

執行資料:
1285046936531
standard if else:7625
1285046944156
question:6594
兩個方法的執行其實是會多少變化的。些微變化取決於執行時候和記憶體的情況。
不過standard和question的大小還是明顯在1000以上的差異,也就是1s,second