【发布时间】:2021-01-08 09:56:15
【问题描述】:
我想计算完成 akka 流所需的时间 object Demo 扩展 App {
implicit val system = ActorSystem("MyDemo")
implicit val materializer = ActorMaterializer()
val startTime = System.currentTimeMillis
System.out.println(elapsedTime)
val flowA = Flow[String].map { element ⇒
println(s"Flow A : $element ${Thread.currentThread().getName()}" )
Thread.sleep(1000)
element
}
val flowB = Flow[String].map { element ⇒
println(s"Flow B : $element ${Thread.currentThread().getName()}" )
Thread.sleep(1000)
element
}
val flowC = Flow[String].map { element ⇒
println(s"Flow C : $element ${Thread.currentThread().getName()}" )
Thread.sleep(1000)
element
}
import system.dispatcher
val completion = Source(List("Java", "Scala", "C++"))
.via(flowA)
.via(flowB)
.via(flowC)
.runWith(Sink.foreach(s ⇒ println("Got output " + s)))
val stopTime = System.currentTimeMillis
val elapsedTime = stopTime - startTime
println(elapsedTime)
completion.onComplete(_ => system.terminate())
输出
0
113
Flow A : Java MyDemo-akka.actor.default-dispatcher-4
Flow B : Java MyDemo-akka.actor.default-dispatcher-4
Flow C : Java MyDemo-akka.actor.default-dispatcher-4
Got output Java
Flow A : Scala MyDemo-akka.actor.default-dispatcher-4
Flow B : Scala MyDemo-akka.actor.default-dispatcher-4
Flow C : Scala MyDemo-akka.actor.default-dispatcher-4
Got output Scala
Flow A : C++ MyDemo-akka.actor.default-dispatcher-4
Flow B : C++ MyDemo-akka.actor.default-dispatcher-4
Flow C : C++ MyDemo-akka.actor.default-dispatcher-4
Got output C++
查询
- 在流完成之前打印经过的时间
113,原因不清楚。我想打印流完成处理后经过的时间 - 我们如何计算完成流处理所需的时间,因为我想比较使用
.map与用.async替换.map所用时间的结果
【问题讨论】:
-
我不知道你问的是什么问题......
-
我想按流计算完成的总时间,但我的输出打印流完成之前经过的时间@LeviRamsey
-
@LeviRamsey 编辑了我的问题以便更清楚
标签: asynchronous akka akka-stream