使用 reactx、kotlin-coroutines、akka-actors 等框架进行编程的权衡?

Trade-offs of programming with such frameworks as reactivex, kotlin-coroutines, akka-actors?

所有这些框架都在线程之上创建了另一个抽象级别。例如,由于调度原因,使用 kotlin-coroutines 似乎比纯线程需要更多 CPU 周期。对于反应式,我们有相同的情况,额外的级别 - 更多 CPU 周期。虽然我不知道 akka-actors.

而且即使有更多 CPU 周期来调度协程,我们仍然可能因为非阻塞方法而获得性能提升。

有人可以详细解释这些收益(还是权衡取舍?),重点放在硬件和 OS 级别上?也许在什么情况下我们会想要使用协程或 reactivex 而当我们因为某些原因不想使用它们时?

线程、协程、参与者等都是围绕并发操作的抽象。这里的主要权衡是这些并发操作的数量和它们处于活动状态的持续时间。

OS-level 线程在有几个并发操作(因为每个线程开销很大)并且所有操作都做大块 CPU-bound 工作时(因为在线程之间切换开销非常大)时工作得很好.

User-level 在 OS-level 线程之上创建的各种抽象在你有很多并发操作时工作得很好 and/or 它们消耗很少 CPU从开始到结束或从一个恢复点到下一个暂停,因为这些抽象是 light-weight 并且它们的启动、停止和在它们之间切换也非常便宜。