Wpis z mikrobloga

Załóżmy, że mam pewien program który realizuje skomplikowany obliczeniowo algorytm. Program nie wykonuje operacji wejścia / wyjścia, żadnych połączeń z siecią, odczytu z dysku, itp. Działa tylko na danych ulokowanych w ramie. Czy taki program podzielony na kilka wątków i odpalony na jednordzeniowym procesorze wykona się szybciej niż jego jednowątkowy odpowiednik?
Według mnie odpowiedź brzmi nie, ale jeśli jest inaczej, to czekam aż mnie ktoś oświeci.

#informatyka #programowanie
  • 3
Zależy jak wiele masz pętli i jeśli tak to jak wielkie, przy zrownoleglaniu pętli małych obliczenia są wolnijesze od jednowatkowego wykonania. Wg mnie zależy również jak dużo masz operacji na zmiennych typu (WAW lub RAW). Czy nie masz miejsc gdzie będziesz głodził / zakleszczal wątki.
@Matt23: jednordzeniowy procesor tzn. jednowątkowy? Jeśli tak to nie będzie szybciej. Procesor może wykonywać jeden wątek na raz i będzie tylko tracił czas na przełączanie się między nimi. No chyba że scheduler systemu przydziela czas procesora w zależności od ilości wątków albo w inny dziwaczny sposób. Ale wtedy musiałoby się jednocześnie wykonywać coś innego a system operacyjny być jakimś niszowym.