2012-04-07 3 views
1

Mit PLINQ C# parallele Abfragen sind geordnet oder ungeordnet, je nachdem, wie Sie sie konstruieren. Es gibt einige Informationen on MSDN here regarding order preservation in PLINQ.Sollen geordnete und ungeordnete parallele Sammlungen unterschiedliche Typen in C# haben?

Ich finde das verwirrend und schwierig zu verwalten. In meinem Kopf Sammlungen, wo die Reihenfolge wichtig ist sind Sequenzen und Sammlungen, wo Ordnung nicht signifikant sind Taschen (oder, wenn es keine Duplikate sind, dann könnten sie Sätze sein).

Die Vorgänge an Beuteln und Sequenzen sind unterschiedlich und haben unterschiedliche Komplexitätseigenschaften, insbesondere wenn sie als parallele Algorithmen implementiert sind.

Mit anderen Worten, ich denke, dass geordnete und ungeordnete Sammlungen unterschiedliche Typen sein sollten, und dass dies die Dinge vereinfachen würde. Gibt es einen Grund, warum alles in PLINQ als "ParallelQuery()" zusammengefasst ist?

Antwort

2

Gibt es einen Grund, warum in PLINQ alles so einfach ein vereintes ist "ParallelQuery()"

Es ist einfacher. Ich denke, 2 Typen wären möglich gewesen, aber mit beträchtlichen Kosten. Und wäre es einfacher zu benutzen?

Wenn Sie eine Sequenz parallel verarbeiten, geben Sie standardmäßig die Reihenfolge auf. Sie sollten sich bewusst sein, dass die Wiederherstellung der Sequenz teuer ist und dass es einige zusätzliche Schritte erfordern sollte.

Aber wenn Sie es brauchen, scheint das Hinzufügen einer .AsOrdered() viel weniger Schmerzen als das Kopieren (!) Ihrer Daten in eine andere Sammlung zuerst.