【问题标题】:Scala partial function composition performanceScala偏函数组合性能
【发布时间】:2015-01-07 17:51:11
【问题描述】:

定义为的偏函数的性能有什么区别

val matches = {
   case Match(x,y) => ...
   case AnotherMatch(x,y,z) => ...
   case x:YetAnother => ...
}

还有一个定义如下?

val match1 = {
   case Match(x,y) => ... 
}
val match2 = {
   case AnotherMatch(x,y,z) => ...
}
val match3 = {
   case x:YetAnother => ...
}
val matches = match1 orElse match2 orElse match3

【问题讨论】:

  • 是的。但是,大多数情况下它可能可以忽略不计,如果后一种方法以任何方式使您的代码更具可读性或可维护性,您应该使用它,并且只有在您确认性能是您的一个真正问题时才进行优化应用程序。

标签: scala partial-functions


【解决方案1】:

如果匹配项是,则差异约为 2 倍

Some(x: Int) if x > 0 => x
Some(x: Int) if x < 0 => -x
None => 0

所以它在紧密的循环中可能很重要,但通常不会。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-21
    • 2017-02-16
    • 1970-01-01
    相关资源
    最近更新 更多