java - 在不处理慢速 IO 时,从性能的角度来看使用响应式编程是否有意义?

标签 java reactive-programming project-reactor

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

我想知道从一般的性能角度来看使用它是否有意义?如果程序除了一些屏幕输出(例如计算无限 PI 数或斐波那契数列)之外没有任何 I/O,它不会减慢您的计算速度吗?还是您的代码清洁度的提高使它付出了很小的代价?

最佳答案

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

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

所以,经典的异步方式是处理慢IO的一种方案。响应式(Reactive)方法远不止于此。

关于java - 在不处理慢速 IO 时,从性能的角度来看使用响应式编程是否有意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45343289/

相关文章:

java - 当我使用套接字通过本地网络传输文件时,如何防止文件损坏?

java - 在Java中转换日期格式的最快方法?

ios - 没有 onNext 的 observer.onComplete() 如何在 flatmap 链中工作? - 它必须跳过所有以下平面图,对吗?

java - Flux.generate 与 Consumer 和并行

java - Java 中的继承和私有(private)变量

java - Android 后台服务

java - 如何在 RxJava 中返回聚合——collect() 是正确的方法吗?

java - 如何检测重试 Flux 中的恢复?

java - 如何获取 Flux 的最后一项而不用 reduce() 或 last() 折叠它

java - 项目 react 器超时