Question

Je envisage spécifiquement d'écrire des algorithmes de traitement du signal dans l'un ou l'autre, ou peut-être une combinaison de ces deux.

La performance n'est pas une grande préoccupation, la clarté d'exprimer l'intention est plus importante.

Je chercherais à mettre en œuvre les «blocs» suivants et à les composer:

  • Filtres (FIR et IIR)
  • Détecteurs de phase
  • Intégrateurs
  • Mélangeurs
  • Générateur de fonction
  • PLL (en utilisant ce qui précède comme blocs de construction)

Je comprends que Rx peut être considéré comme «linq-to-streams», et TPL est une abstraction par rapport à la concurrence. J'obtiens également que RX utilise TPL en interne pour gérer ses bits asynchrones et que TPL Dataflow ajoute de la composabilité à TPL.

Ainsi, les deux sont asynchrones, les deux sont composables, les deux sont assez élevés (rx moreso). Où doit être utilisé chacun, à la fois en général et dans mes éléments de traitement du signal ci-dessus?

Était-ce utile?

La solution

Cela dépend du type de primitives avec lesquelles vous avez affaire - RX et TPL sont beaucoup plus riches si vous utilisez des types amplifiés pour pousser les données, mais si vous avez affaire à des échantillons individuels (comme un IObservable<byte>, ISourceBlock<float> etc.) Il peut être fastidieux de travailler avec.

Après avoir récemment mis en œuvre un générateur de fonctions, FFT, Quantifier Spectra Power Spectres, j'ai commencé avec RX (ce n'était pas un cas pour la concurrence / le parallélisme où TPL excelle), mais j'ai constaté que je passais plus de temps à essayer de le faire fonctionner dans le Modèle RX - Je me suis finalement installé pour System.Stream.

Cela a bien fonctionné pour moi et était étonnamment composable. Cependant, les performances et l'évitement de GC étaient en tête de ma liste, donc si cela ne vous dérange pas non plus, je suggère RX - vous pouvez faire des choses vraiment cool avec des combinateurs réactifs.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top