在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)
答案 0 :(得分:5)
请参阅detailed analysis作者的unfiltered。它的效率基本上不高。我相信some work已在主干中完成,以便在博客文章发布后不久解决这个问题。
答案 1 :(得分:1)
第二种情况的效率可能不如第一种情况低,因为编译器可以将其转换为第一种情况(事实上,这与虚拟模式匹配器的作用相差不远)。
所以,如果你有选择,第二种情况总是更安全的赌注。