Flowable.parallel 对比 Flowable.flatMap?
Flowable.parallel vs Flowable.flatMap?
RxJava 2.0.5引入了ParallelFlowable
类型,对应Flowable.parallel()
操作符。我发现实现并行性的一般建议是 flatMap
像这样:
Flowable.just(1,2,3)
.flatMap(x -> Flowable.just(x)
.observeOn(Schedulers.computation())
.map(y -> y + 1))
.forEach(System.out::println);
什么时候使用flatMap
并行比较合适,什么时候使用ParallelFlowable
比较好?
I've found that the general advice for achieving parallelism is with flatMap like so:
这些建议来自 parallel
引入之前,因此应考虑 API 从那时起的演变。
When is it appropriate to use flatMap for parallelism, and when is it better to use ParallelFlowable?
ParallelFlowable
具有一组有限的运算符:map
、filter
、doOnNext
、reduce
、flatMap
等。成熟的 Flowable
API。因此,如果你有一些 "exotic" 不能用上面的运算符表达的并行操作,你应该坚持基于 Flowable.flatMap
的并行性(或考虑 groupBy
并行性)。
否则,here is a benchmark comparison between the parallelization approaches (code).
RxJava 2.0.5引入了ParallelFlowable
类型,对应Flowable.parallel()
操作符。我发现实现并行性的一般建议是 flatMap
像这样:
Flowable.just(1,2,3)
.flatMap(x -> Flowable.just(x)
.observeOn(Schedulers.computation())
.map(y -> y + 1))
.forEach(System.out::println);
什么时候使用flatMap
并行比较合适,什么时候使用ParallelFlowable
比较好?
I've found that the general advice for achieving parallelism is with flatMap like so:
这些建议来自 parallel
引入之前,因此应考虑 API 从那时起的演变。
When is it appropriate to use flatMap for parallelism, and when is it better to use ParallelFlowable?
ParallelFlowable
具有一组有限的运算符:map
、filter
、doOnNext
、reduce
、flatMap
等。成熟的 Flowable
API。因此,如果你有一些 "exotic" 不能用上面的运算符表达的并行操作,你应该坚持基于 Flowable.flatMap
的并行性(或考虑 groupBy
并行性)。
否则,here is a benchmark comparison between the parallelization approaches (code).