Po pierwsze, dwie operacje są nieskończenie różne. map
jest transformacja z listy podanej funkcji A => B
, natomiast foreach
daje Unit
i jest zwykle używany do niepożądanych skutków ubocznych.
Domyślam się, że foreach
jest "szybszy" pod względem cykli wymaganych do wykonania w porównaniu z map
, który tworzy nową kolekcję (w tym przypadku) w wyniku działania funkcji. Ale porównanie tych dwóch naprawdę porównuje jabłka i pomarańcze.
map
będzie tylko wtedy, gdy zbiór równoległych, na których jest ona wywoływana jest zbiorem równoległe. Więc w przykładzie:
list.map(x => x)
nie jest równoległa i jest sekwencyjna, ale
list.par.map(x => x)
byłyby równoległe. Istnieją oczywiście różne zastrzeżenia, które należy wziąć pod uwagę przy takim użytkowaniu. Ta sama kolekcja równoległa ma również metodę foreach
.
Skąd wiesz 'map' jest szybszy niż' foreach'? – Jatin
Tak naprawdę w rzeczywistości "foreach" powinno być szybsze niż 'map', ponieważ wewnętrznie' map' buduje 'list' w powyższym przypadku, gdy' foreach' nie jest budowany. Dowolny skrypt pokazuje, że 'foreach' jest szybszy – Jatin
Cóż, testowałem z kodem i które wyniki dla wyrażeń (np. Map) są szybsze w scala w porównaniu do foreach lub w czasie itp. –