亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

多個過濾器調用與一個過濾器調用

多個過濾器調用與一個過濾器調用

慕哥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 關注
  • 92 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號