RxJava - 観測 - 1つのフィルタコール対複数のフィルタの呼び出し

SAS:

私が観察可能で放出されたフィルタ項目にしたいが、私は多くのフィルタのcriteriasを持っていると私はそれを行うには良い方法は何か思ったんだけど - 賢明なパフォーマンスを。

一つの方法は、コールするであろう1複数でのcriterias文戻る最終的なフィルタリング結果、呼の「IF」の全てを有する「フィルタ」方法:

observable
    .filter(this::filter)

もう一つの方法は、特定の基準によって、各フィルタを複数の「filterX」メソッドを持っていること、およびチェーンでそれらを呼び出します。

observable
    .filter(this::filterX)
    .filter(this::filterY)
    .filter(this::filterZ)

私の質問は - 任意のパフォーマンスの違いがあり、2つのどちらが「より良い練習」ですか?私は2番目の1のよりよい、より読みやすいを見つけることが、私は第二のアプローチにそれを気にしてリファクタリングする必要がある場合ステートメントと私は思ったんだけど「が」現在、私は〜30で、「フィルタ」方式に遭遇しました。

グスタボ:

コンセプトに自分で説明したシナリオを最適化するRxJavaライブラリ試行演算子の融合

オペレータ融合が低下オーバーヘッドおよびより良い性能、より少ない割り当てを可能にする特定のオペレータは、単一のオペレータ(マクロ融合)または互いに(マイクロ融合)との間で共有その内部データ構造に組み合わせることができることを前提としています。

これは、フィルタ演算子についての具体的な例与え設計文書を

  • Bは二オペレータのパラメータセットは、単一のアプリケーションに組み合わせることができます。例:フィルタに結合フィルタ(P1).filter(P2)(P1 && P2)。

だから、あなたの場合には、ライブラリーは、多くのパフォーマンスの違いを持っ​​ていないために、すべてのフィルタを組み合わせるために最善を尽くします。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=204246&siteId=1