import scala.collection.parallel.mutable._ val a = ParArray(0 until 10: _*) for(i <- 0 until 10) println("Should be: " + a.sum + " is: " + a.foldLeft(0)(_+_))Dieser Code liefert folgende (oder ähnliche) Ausgabe:
Should be: 45 is: 45 Should be: 45 is: 43 Should be: 45 is: 38 Should be: 45 is: 38 Should be: 45 is: 41 Should be: 45 is: 40 Should be: 45 is: 21 Should be: 45 is: 45 Should be: 45 is: 45 Should be: 45 is: 45Wie man sehen kann sind es teilweise gravierende Unterschiede. Auch schön sehen kann man es anhand eines Strings:
import scala.collection.parallel.mutable._ val a = ParArray("foobar": _*) for(i <- 0 until 10) println(a.foldLeft("")(_+_))Ausgabe:
oo fboor fbooar fobr fboar fboar fbooar fbooar fbooar baroHier ist nicht nur zu sehen, dass teilweise über 50% der Elemente komplett ignoriert werden, sondern dass auch noch die Reihenfolge absolut willkürlich ist. Tauscht man in beiden Fällen das foldLeft durch ein foldRight erhält man die zu erwartenden Ergebnisse.
Ich werde mir die Parallel Collections noch weiter ansehen und ggf. weitere Fehler oder Merkwürdigkeiten hier posten.
So long
Keine Kommentare:
Kommentar veröffentlichen