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--你可以用反应性组合器做一些非常酷的事情。

相关问题