我创建了一个叫做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/