Zuerst nahm ich an, dass jede Sammlungsklasse eine zusätzliche par
Methode erhalten würde, die die Sammlung in eine passende parallele Datenstruktur umwandeln würde (wie map
gibt die beste Sammlung für den Elementtyp in Scala 2.8 zurück).Was ist der bevorzugte Weg, um die parallelen Sammlungen in Scala zu verwenden?
Nun scheint es, dass einige Collection-Klassen unterstützen eine par
Methode (z. B.. Array), aber andere haben toParSeq
, toParIterable
Methoden (z. B.. Liste). Das ist ein bisschen komisch, da Array nicht oft benutzt oder empfohlen wird.
Was ist der Grund dafür? Wäre es nicht besser, nur eine par
für alle Sammlung Klassen zur Verfügung zu haben, die "das Richtige" tun?
Wenn ich Daten habe, die parallel verarbeitet werden könnten, welche Typen sollte ich verwenden? Die Merkmale in scala.collection
oder die Art der Implementierung direkt?
Oder sollte ich jetzt Arrays
bevorzugen, weil sie billiger zu parallelisieren scheinen?
Das scheint so zu sein, als ob '' SeqLike' 'nur eine '.sortierte' ist, also musst du' items.toSeq.sorted' anstelle von 'items.sorted' machen. Warum also all die '.toParIterable' etc. Methoden, anstatt Leuten einfach zu sagen,' items.toArray.par' zu machen, wenn 'items' nicht parallelisierbar sind? – Steve
@Steve - Es besteht die Möglichkeit, dass die toParIterable-Methoden keine Kopie der zugrunde liegenden Daten erstellen müssen. Auch wenn sie langsam sind, könnten sie gelegentlich ein guter Kompromiss sein (z. B. wenn die Liste durchlaufen wird oder was nicht schnell verglichen mit der Berechnung für jedes Element der Liste ist). –