PartialFunction或Else的效率

时间:2012-02-28 06:40:13

标签: scala

PartialFunction时间内,使用orElse match的效率是否比使用大型apply阻止效率更高或更低?

为了说明这个问题,请:

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)

2 个答案:

答案 0 :(得分:5)

请参阅detailed analysis作者的unfiltered。它的效率基本上不高。我相信some work已在主干中完成,以便在博客文章发布后不久解决这个问题。

答案 1 :(得分:1)

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

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