13

我特別關注用一種或其他方式編寫一些信號處理算法,或者可能是這兩種方法的某種組合。TPL Dataflow over Reactive Extensions(Rx)的用例

表現不是一個大問題,表達意圖的清晰度更重要。

我會尋找到實現以下 '塊',並撰寫他們:

  • 過濾器(包括FIR和IIR)
  • 相位檢測
  • 集成
  • 攪拌機
  • 功能發生器
  • PLL(使用以上爲構建塊)

我知道Rx可以被認爲是'Linq-to-streams',而TPL是一種併發性的抽象。 我還得到Rx內部使用TPL來管理其異步位,並且TPL數據流向TPL添加了可組合性。

所以兩者都是異步的,都是可組合的,都是相當高的水平(Rx更強)。 每個應該在哪裏使用,一般都在我的信號處理項目上面?

+0

@Paul R感謝編輯,沒有注意到! – stevenrcfox 2012-02-29 10:17:16

+1

不客氣! – 2012-02-29 10:45:33

+0

@Overflow是否解決了一個方法?你能告訴我們它是什麼嗎? – Asti 2012-03-12 12:54:36

回答

6

這取決於您處理的原始類型 - 如果您使用放大類型推送數據,Rx和TPL會更加豐富,但是如果您要處理單個樣本(例如IObservable<byte>ISourceBlock<float>等),可能會很繁瑣。最近我實現了一個函數發生器,FFT,功率譜量化器等等,我開始使用Rx(這不是TPL擅長的併發/並行的情況),但是發現我花了更多的時間來嘗試使它在Rx模型中工作 - 我最終解決了System.Stream

它對我來說效果很好,令人驚訝的是可組合。然而,性能和避免GC是我列表中的首要問題,所以如果你不介意的話,我會建議Rx--你可以用反應性組合器做一些非常酷的事情。

相關問題