在Scala中抛出异常是否很昂贵?
更具体地说,在为将来的呼叫映射例外时,例如:
import scala.concurrent.Future
import scala.concurrent.ExecutionContext.Implicits.global
val fut: Future[Int] = Future(1)
x
和y
在性能方面有很大差异吗?
case class MappedException(message: String) extends Exception(message)
val x = fut.recover {
case e => throw MappedException(e.getMessage)
}
val y = fut.recoverWith {
case e => Future.failed(MappedException(e.getMessage))
}
答案 0 :(得分:0)
不,我认为不会有太大差异。
您应该自己测量它:https://github.com/ktoso/sbt-jmh
JMH是一个Java工具,用于构建,运行和分析用Java和其他针对JVM的语言编写的nano / micro / milli / macro基准测试。