Hi,
ich habe zwei einfache abstrakte Programme erstellt um euch hier zu zeigen was mir beim Programmieren eines Programmes passiert ist.
Es geht darum, dass ich verschachtelte for-Schleifen habe, die dann auch zunächst je eine if-Bedingung haben und wenn diese nicht erfüllt ist wird die Schleife betreten und dadurch die Unterschleifen. Kurzgesagt: Das Programm zählt nur weiter, wenn kein Wert doppelt vor kommt. (Ja ich weiß, dass ich auch ein Set benutzen kann um keine doppelten Werte zu haben. Ich brauche aber auf den untersten ebenen eine garantiert 100% Überdeckung aller Fälle.)
Jedenfalls wollte ich den Prozess parallelisieren, um Zeit zu sparen. Dabei ist mir aufgefallen, dass das gleiche Programm in 10 Threads 15 mal länger braucht als ohne Threads.
Ich möchte wissen warum, was ich falsch gemacht habe und wie ich es beheben kann.
Die Programme findet ihr im Anhang.
Prozessor: AMD FX 8350 mit 4.01 GHz; RAM: 32 GB davon 16 GB frei.
EDIT: Möglicherweise könnte jemand argumentieren, dass die Umschaltzeit zwischen den Prozessen bei 10 Prozessen mehr aufhält als das hochzählen an sich. Deshalb hab ich es mit nur 4 Threads ausprobiert, die nur bis 361.380.096 zählen, statt bis 903.450.240 und diese 4 Threads haben dafür immernoch 4 Sekunden, also 4 mal länger gebraucht.
Danke - Enomine
ich habe zwei einfache abstrakte Programme erstellt um euch hier zu zeigen was mir beim Programmieren eines Programmes passiert ist.
Es geht darum, dass ich verschachtelte for-Schleifen habe, die dann auch zunächst je eine if-Bedingung haben und wenn diese nicht erfüllt ist wird die Schleife betreten und dadurch die Unterschleifen. Kurzgesagt: Das Programm zählt nur weiter, wenn kein Wert doppelt vor kommt. (Ja ich weiß, dass ich auch ein Set benutzen kann um keine doppelten Werte zu haben. Ich brauche aber auf den untersten ebenen eine garantiert 100% Überdeckung aller Fälle.)
Jedenfalls wollte ich den Prozess parallelisieren, um Zeit zu sparen. Dabei ist mir aufgefallen, dass das gleiche Programm in 10 Threads 15 mal länger braucht als ohne Threads.
Ich möchte wissen warum, was ich falsch gemacht habe und wie ich es beheben kann.
Die Programme findet ihr im Anhang.
Prozessor: AMD FX 8350 mit 4.01 GHz; RAM: 32 GB davon 16 GB frei.
EDIT: Möglicherweise könnte jemand argumentieren, dass die Umschaltzeit zwischen den Prozessen bei 10 Prozessen mehr aufhält als das hochzählen an sich. Deshalb hab ich es mit nur 4 Threads ausprobiert, die nur bis 361.380.096 zählen, statt bis 903.450.240 und diese 4 Threads haben dafür immernoch 4 Sekunden, also 4 mal länger gebraucht.
Danke - Enomine
Anhänge
Zuletzt bearbeitet: