Kolekcje parallel vs Future.traverse

Kolekcje parallel vs Future.traverse
KamilAdam
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Silesia/Marki
  • Postów: 5550
0

Cześć, w Scali mogę przetworzyć kolekcję na dwa sposoby i zastanawiam się który jest lepszy:

Kopiuj
someSeq.par.map { x => 
  longRunningAction(x)
}

//wersja jak nie potrzebujemy wyniku
someSeq.par.foreach { x => 
  longRunningAction(x)
}

vs

Kopiuj
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

stivens
  • Rejestracja: dni
  • Ostatnio: dni
1

Sorry za offtop ale

Kopiuj
ZIO.foreachPar(collection)(f)

:D

KamilAdam
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Silesia/Marki
  • Postów: 5550
0
stivens napisał(a):

Sorry za offtop ale

Kopiuj
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

stivens
  • Rejestracja: dni
  • Ostatnio: dni

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.