2012-02-28 53 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

第二种情况不可能比第一种情况效率低,因为编译器可以将其转换为第一种(实际上,这与虚拟模式匹配器的功能相差不远)。

所以,如果你有选择,第二种情况总是比较安全的。