我有以下两段用 Scala/Monix 编写的代码:
def f1(input) =
for {
a <- task1(input)
b <- task2(a)
c <- task3(b)
} yield (c).runSyncUnsafe
和
def f2(input) = {
val a = task1(input).runSyncUnsafe
val b = task2(a).runSyncUnsafe
task3(b).runSyncUnsafe
}
我认为 f1 版本更好,因为它完全异步并且不会阻塞线程,我的假设是,如果有很多任务正在运行,第一个在多线程中应该表现更好。
我知道我应该编写一个测试来比较这两种实现,但这需要对遗留代码进行大量重构。此外,在我们的具体情况下,这两个版本的分析并不容易,所以我先在这里问,希望有很多 Scala/Monix 经验的人回答:
两者在重负载下的性能应该如何比较?这是一个真正的问题还是不是问题?