簡體   English   中英

if else vs開關在Java中的性能

[英]if else vs switch performance in java

我想知道使用if語句或switch之間是否有效率差異。 例如:

if(){
//code
}
else if(){
//code
}
else{
//code
}

我認為,即使第一個if語句為true,程序也需要檢查所有if語句。

switch(i){

case 1:
//code
break;
case 2:
//code
break;

但是在開關中,有一個break命令。 我的對嗎? 如果沒有,您能否解釋一下兩者之間的效率差異?

Switch PERF優於if else在開關的情況下,會有一個時間的評價。 一旦評估了該開關,它便知道需要執行哪種情況,但是在if else情況下, if else情況最糟,則必須經過所有條件。

列表條件越長,切換性能越好,但是對於較短的列表(僅兩個條件),它也會變慢

為什么切換比如果更快

通過切換,JVM加載要比較的值並遍歷值表以查找匹配項,這在大多數情況下更快

Switch速度更快。

想象一下,您正處在交叉路口,有很多路徑。 使用switch ,您可以在第一時間轉到正確的路徑。

if使用if ,則必須先嘗試所有路徑,然后才能找到正確的路徑。

盡可能使用switch

當然,對於計算機,這種差異很小,您甚至都不會注意到。 但是,是的,您明白了。

我認為代碼很清楚。 使用if時,您必須檢查每種情況,然后逐項檢查(在最壞的情況下,最后一次返回將返回結果)。 使用switch時,諸如特殊字節碼檢查之類的某種跳轉到正確的情況以返回。 因此,該開關比if語句快一點。 但是,我認為我們需要專注於實現方式,以便於閱讀。 在某些簡單的情況下,if也是編寫代碼的一種選擇。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM