Wpis z mikrobloga

Prosta i skuteczna metoda na odpalenie 10 000 razy funkcji - każde wywołanie wykonuje się 5 sekund
aby uzyskać wynik nie po 10 000*5s=50 000s tylko w mniej niż 500s?
odpalenie 1000 wątków?
do tego dochodzi zapis wyników z tej funkcji co pewnie jest trudniejsze do wykonania na wątkach

#programowanie #linux #java #perl #python
  • 18
@Cebulakx: najpierw sprofiluj co tam tyle trwa. Podział na wątki powinien zredukować czas wykonania całości do n-krotnie (n – ilość wątków, pod warunkiem że masz n wątków w procesorze). Jeśli tam są operacje IO (czas użytkownika mniejszy niż czas rzeczywisty wykonania), to nawet na jednym wątku asynchronicznie powinieneś odczuć przyspieszenie.
@Hilarious: @kywmn: @tell_me_more: @Razi91:
powiedzmy że jest to funkcja ping która wykonuje 2x komende ping
ping z timeoutem 2s pakietem 50b+ ping z timeoutem 3s pakietem 500b + może pomiędzy jakieś drobne dodatkowe operacje (nie piszcie nic o skryptach do skanowania typu fping itp itd - wszelkie narzędzia do pingowania hostów nie umożliwiają parametryzacji każdego poszczególnego pinga, nie da się w nich wykonać 'sekwencji pingów z różnymi wielkościami
@afe1: Jeżeli operacje wykonywane przez @Cebulakx będą blokujące, to użycie Quasara i fibersów nic nie da. Pamiętaj że to nadal działa na JVM i nadal pod spodem korzysta z normalnej puli wątków (konkretniej: ForkJoinPool). Na podobnej zasadzie nie pomogłyby tutaj Akka Actors.

@Cebulakx: Kluczem do tego co chcesz osiągnąć jest non-blocking network call/socket/connection (pod tymi określeniami szukaj). W świecie JVM coś takiego osiągnąłbyś za pomocą SocketChannel, w świecie Node.js miałbyś