13

私は、いくつかの信号処理アルゴリズムをどちらか一方、あるいは両方の組み合わせで書くことを特に検討しています。Reactive Extensions(Rx)上でのTPLデータフローの使用例

パフォーマンスは大きな問題ではなく、意図を表現する明快さがより重要です。

私は、次の 'ブロック' を実装し、それらを構成するために探しているはずだ:

  • フィルタ(FIRとIIRの両方)
  • 位相検出器
  • インテグレータ
  • ミキサー
  • 機能ジェネレータ
  • PLL(ビルディングブロックとして上記を使用)

Rxは 'Linq-to-streams'と考えることができ、TPLは並行性よりも抽象的です。RxはTPLを内部的に使用してその非同期ビットを管理し、TPLデータフローはTPLに合成機能を追加することもわかりました。

両方とも非同期であり、どちらも構成可能であり、両方ともかなり高いレベル(Rx moreso)です。 一般的にも、上記の信号処理の項目の両方で、それぞれどこを使用する必要がありますか?

+0

@Paul R編集していただきありがとうございました! – stevenrcfox

+1

あなたは大歓迎です! –

+0

@Overflowアプローチに解決しましたか?それが何であるか教えていただけますか? – Asti

答えて

6

あなたが処理しているプリミティブの種類によって異なります - 増幅されたタイプを使用してデータをプッシュする場合、RxとTPLははるかに豊富ですが、個々のサンプル(例えばIObservable<byte>ISourceBlock<float>など)と一緒に作業するのは面倒かもしれません。

最近、Function Generator、FFT、パワースペクトラム量子化器を実装しているので、私はRxを使い始めました(これはTPLが優秀な並行性/並列性の場合ではありませんでした)。それはRxモデルで動作します - 私は最終的にSystem.Streamのために解決しました。

私にとってはうまくいっていて、意外にも構成可能でした。しかし、パフォーマンスとGCの回避は私のリストのなかでもトップだったので、どちらでも気にしないなら、Rxを提案したいと思います。反応性のコンビネータを使って本当にクールなことをすることができます。

関連する問題