Kolekcje parallel vs Future.traverse

Kolekcje parallel vs Future.traverse
KamilAdam
  • Rejestracja:ponad 6 lat
  • Ostatnio:około miesiąc
  • Lokalizacja:Silesia/Marki
  • Postów:5505
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


Mama called me disappointment, Papa called me fat
Każdego eksperta można zastąpić backendowcem który ma się douczyć po godzinach. Tak zostałem ekspertem AI, Neo4j i Nest.js . Przez mianowanie
edytowany 1x, ostatnio: KamilAdam
cerrato
Ja bym wybrał foreach, co jednoznacznie sugeruje, że lepsza opcja to ta druga ;)
KamilAdam
A jak zamienię foreach na map?
stivens
  • Rejestracja:ponad 8 lat
  • Ostatnio:około godziny
1

Sorry za offtop ale

Kopiuj
ZIO.foreachPar(collection)(f)

:D


λλλ
edytowany 1x, ostatnio: stivens
KamilAdam
  • Rejestracja:ponad 6 lat
  • Ostatnio:około miesiąc
  • Lokalizacja:Silesia/Marki
  • Postów:5505
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


Mama called me disappointment, Papa called me fat
Każdego eksperta można zastąpić backendowcem który ma się douczyć po godzinach. Tak zostałem ekspertem AI, Neo4j i Nest.js . Przez mianowanie
stivens
  • Rejestracja:ponad 8 lat
  • Ostatnio:około godziny
1

λλλ

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.