为了账号安全,请及时绑定邮箱和手机立即绑定

多个过滤器调用与一个过滤器调用

多个过滤器调用与一个过滤器调用

慕哥9229398 2022-12-15 14:47:15
我想过滤 Observable 发出的项目,但我有很多过滤条件,我想知道更好的方法是什么 - 性能方面。一种方法是调用一个“filter”方法,该方法具有多个“if”语句中的所有条件并返回最终过滤结果,并调用:observable    .filter(this::filter)另一种方法是拥有多个“filterX”方法,每个方法都按特定条件进行过滤,并在链中调用它们:observable    .filter(this::filterX)    .filter(this::filterY)    .filter(this::filterZ)我的问题是 - 是否存在任何性能差异,两者中哪一个是“更好的做法”?我发现第二个更好,更易读,但目前我遇到了一个带有 ~30 个“if”语句的“过滤器”方法,我想知道我是否应该打扰并将其重构为第二种方法。
查看完整描述

1 回答

?
天涯尽头无女友

TA贡献1831条经验 获得超9个赞

RxJava 库尝试使用Operator Fusion的概念优化您描述的场景:

运算符融合的前提是某些运算符可以组合成一个单一的运算符(宏融合)或它们之间共享的内部数据结构(微融合),从而允许更少的分配、更低的开销和更好的性能。

它在设计文档中给出了有关过滤器运算符的具体示例:

  • a is b 并且两个运算符的参数集可以组合成一个应用程序。示例:filter(p1).filter(p2) 组合成 filter(p1 && p2)。

因此,在您的情况下,库将尽力组合所有过滤器,以免性能差异太大。


查看完整回答
反对 回复 2022-12-15
  • 1 回答
  • 0 关注
  • 98 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号