我创建了一个叫做LogActor的akka​​演员。
LogActors的接收方法处理来自其他actor的消息并将它们记录到指定的日志级别。

我可以通过两种方式区分不同的级别。第一个:

import LogLevel._
object LogLevel extends Enumeration {
    type LogLevel = Value
    val Error, Warning, Info, Debug = Value
}
case class LogMessage(level : LogLevel, msg : String)


第二个:(编辑)

abstract class LogMessage(msg : String)
case class LogMessageError(msg : String) extends LogMessage(msg)
case class LogMessageWarning(msg : String) extends LogMessage(msg)
case class LogMessageInfo(msg : String) extends LogMessage(msg)
case class LogMessageDebug(msg : String) extends LogMessage(msg)


哪种方法更有效?匹配案例类或枚举值所需的时间更少吗?

(我读了this问题,但没有任何有关运行时问题的答案)

最佳答案

适用“不要过早优化”。与您花费时间将消息传递给演员或实际记录它们的时间相比,我认为它们之间的差异根本没有关系。但是我希望最好的性能是创建Java enum(可以从Scala轻松访问和使用)来记录级别而不是Scala Enumeration

关于scala - Scala-枚举与案例类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13343513/

10-10 22:50