2013-06-13 4 views
8

Ich habe einen großen Zweifel, als ich mit der Programmierung von Scala begann. Ich möchte wissen, wie die map Methode in Scala funktioniert. Ob es sequenziell oder in Multithread verarbeitet wird? Und noch wichtiger, ich würde gerne wissen, warum map Methode ist schneller als while oder foreach?Unterschied zwischen Karte und Foreach-Methode in Scala?

val list = List(1,2,3,45,12) 
list.map(x => x) 
list.foreach(x => println(x)) 
+4

Woher wissen Sie, dass 'map' schneller ist als' foreach'? – Jatin

+4

Tatsächlich sollte 'foreach' schneller als' map' sein, da intern 'map' im obigen Fall eine' liste' erstellt, in der 'foreach' nicht erstellt wird. Jedes Skript zeigt 'foreach', um schneller zu sein – Jatin

+0

Nun habe ich mit Code getestet und welche Ergebnisse für (dh Karte) Ausdrücke sind schneller in der Skala im Vergleich zu foreach oder während usw. –

Antwort

17

Erstens sind die beiden Vorgänge unendlich unterschiedlich. map ist eine Transformation der Liste gegeben eine Funktion A => B, während foreach ergibt Unit und wird normalerweise für Nebenwirkungen verwendet.

Ich würde vermuten, dass foreach ist "schneller" in Bezug auf die Zyklen zur Ausführung im Vergleich zu map, die eine neue Sammlung (in diesem Fall) als Ergebnis der Funktion erstellt. Aber diese beiden zu vergleichen, vergleicht Äpfel und Orangen.

map sind nur parallel, wenn die Sammlung, für die sie aufgerufen wird, eine parallele Sammlung ist. Also in Ihrem Beispiel:

list.map(x => x) 

nicht parallel und sequentiell, aber

list.par.map(x => x) 

wäre parallel. Es gibt offensichtlich verschiedene Vorbehalte, die bei dieser Verwendung berücksichtigt werden müssen. Die gleiche parallele Sammlung hat auch eine foreach Methode.

+0

Danke gpampara :-) –

+0

Einfach, kurz und präzise. Genial.. :) –

Verwandte Themen