Kolekcje parallel vs Future.traverse

0

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 i par.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

1

Sorry za offtop ale

ZIO.foreachPar(collection)(f)

:D

0
stivens napisał(a):

Sorry za offtop ale

ZIO.foreachPar(collection)(f)

:D

Śmieszki-heheszki. To już bym szybciej wziął Cats: Parallel, ale mam gołą Scalę i ten projekt to w zasadzie skrypt długotrwający więc nie chcę dokładać kosmicznych bibliotek

1 użytkowników online, w tym zalogowanych: 0, gości: 1