在不处理慢速 IO 的情况下,从性能的角度来看,使用响应式编程有意义吗?

Kri*_*tof 1 java reactive-programming project-reactor

将响应式编程与 Java 和Project Reactor 结合使用在处理慢速 IO 或想要将结果回传给最终用户时非常有意义。您编写的代码往往看起来更简洁——类似于使用函数式编程和流时——但您也被迫以不同的方式编写代码,这让不熟悉该概念的程序员的生活变得更加艰难。

我想知道从性能的角度来看,使用它是否有意义?如果程序除了某些屏幕输出(例如计算无限 PI 数或斐波那契数列)之外没有任何 I/O,它会不会减慢您的计算速度?或者您的代码清洁度的收益是否会降低成本?

Grz*_*rek 5

这取决于您要解决的问题 - 但如果您仅从严格的性能角度来看问题?可能不是,但是...

  • 每个新概念/范式在开始时都被认为是困难的。
    改变一个人的思维方式来吸收
    概念的变化总是很困难的。
  • Reactive 不应该解决性能问题(除非你做了很多阻塞),但由于异步消息驱动的架构,提高了系统的整体响应能力/可扩展性/弹性。
  • 通过使用声明式方法,您可以实现真正的控制反转(是的,这不仅仅是依赖注入)使用反应式方法编写的代码看起来不同但更简单,因为您抽象出处理异步计算、线程管理、调度、并行数据的组合流,背压等,不需要自己处理(想象一下稍后重构)

因此,经典的异步方法是处理慢 IO 的解决方案。反应式方法远不止于此。