Cześć, w Scali mogę przetworzyć kolekcję na dwa sposoby i zastanawiam się który jest lepszy:
someSeq.par.map { x =>
longRunningAction(x)
}
//wersja jak nie potrzebujemy wyniku
someSeq.par.foreach { x =>
longRunningAction(x)
}
vs
Future.traverse(someSeq){ x =>
Future(longRunningAction(x))
}
Załóżmy jeszcze że jest to zapis do zewnętrznego serwisu i wynik średnio mnie interesuje. Byle nie poleciał exception (Sytuacja bardzo rzadko się zdarza, a jak się zdaży to i tak trzeba zapisać wszystko od początku)
Przeczytałem wątek What is the benefit of using Futures over parallel collections in scala?, ale za dużo z niego nie wynika.
Lepszość określam ze względu na dwie kwestie:
- który działa szybciej (chyba
Future.travers
) - który zżera mniej zasobów (chyba
par.map
ipar.foreach
)
Ktoś coś wie? Ktoś coś testował na produkcji?
Uprzedzając pytania, obecnie proces trwa godzinami i trzeba go przyspieszyć
Z góry dziękuję za pomoc i pozdrawiam
foreach
namap
?