2012-02-28 54 views
6

是否使用PartialFunctionorElse比在apply時間內使用較大的match塊更有效?PartialFunction orElse的效率

爲了說明問題,就是:

val pf = { case "a" => "A"} orElse 
     { case "b" => "B" } orElse 
     { case "c" => "C" } ... 

多於或少於效率較低:

val pf = { case "a" => "A" 
    case "b" => "B" 
    case "c" => "C" 
    ... 
} 

應用期間的值,以pf

pf(x) 
+1

即使'orElse'效率較低,它可能並不是非常低效,因爲它可以使您的代碼更清潔時不使用它。話雖如此,你提供的例子是有人設計的(這很好,我不會批評它):後一個例子在這種情況下是首選,因爲沒有理由打破這些非常相似的案例。 – 2012-02-28 16:32:45

回答

1

第二種情況不可能比第一種情況效率低,因爲編譯器可以將其轉換爲第一種(實際上,這與虛擬模式匹配器的功能相差不遠)。

所以,如果你有選擇,第二種情況總是比較安全的。