gpt4 book ai didi

rx-java - 单个项目的 concatMap、flatMap、switchMap

转载 作者:行者123 更新时间:2023-12-02 16:26:11 26 4
gpt4 key购买 nike

我知道 concatMapflatMapswitchMap 之间的区别,但是如果我的流仅发出单个项目并完成怎么办?在这种情况下,从功能上(不是双关语)这两个运算符是相同的,但是性能如何?如果输入仅发出单个项目,哪个运算符需要更多资源?大多数时候,输出也是单个项目(如果相关的话)。

最佳答案

在最新的 RxJava 1.x 中,如果 concatMapflatMap 的源被识别为标量(即 just),则运算符不会实例化,而是通过 ScalarSynchronousSource.scalarFlatMap 替换为自定义内部 Observable,其开销比完整运算符更低。 switchMap 可以做同样的事情,但尚未针对这种情况进行优化(可能不值得)。

否则,我们无法检测常规 Observable 是否只会发出单个项目,从而使运算符执行所有内部工作。您可以使用 Single 来处理发出精确一项或错误的源。

我们有一堆 JMH 基准测试,但我不记得是否有一个用于比较 1 元素源和这些运算符的基准测试。也许我会添加一个并发布结果。

编辑

Here是一个比较基准。

关于rx-java - 单个项目的 concatMap、flatMap、switchMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37563237/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com