Zbiory, które można konwertować na ich równoległe odpowiedniki w stałym czasie, obejmują zmienne i niezmienne mapy skrótów i zestawy mieszające, zakresy, wektory i tablice. Dla wszystkich innych typów kolekcji, w tym opakowań wokół kolekcji pochodzących z Javy, wywołanie par
powoduje skopiowanie zawartości kolekcji do formatu bardziej odpowiedniego do równoległego.
ta opisana jest tutaj bardziej szczegółowo:
http://docs.scala-lang.org/overviews/parallel-collections/conversions.html
Jednakże, w zależności od tego, jak duży zbiór jest i jak drogie blok for
jest, to może być całkowicie uzasadnione, aby zapłacić za tę konwersję. Im więcej przetwarzania równoległego bloku for
dotyczy każdego elementu, tym bardziej zamortyzowany jest koszt konwersji.
Powiedziałabym, że jeśli obliczenia dla każdego elementu zawierają coś nietrywialnego (np. Przynajmniej tworzy nowe obiekty), opłacanie za konwersję ma sens, ale dobrym pomysłem jest pomiar różnicy wydajności między wersją sekwencyjną a równoległością wersja, która obejmuje wywołanie par
:
http://docs.scala-lang.org/overviews/parallel-collections/performance.html
Scala'ish sposobem byłoby imList.par.map (x => yourFunction (x)) – Rajesh
nie całkowicie się z tym zgadzam: nie ma nic fundamentalnie złego "dla" pętli w Scali - to inny sposób powiedzenia tego samego. Czasami wyraźna pętla for może być bardziej przejrzysta, szczególnie w przypadku mapowania płaskiego. –