Mehrere Threads belegen i.d.R. auch mehrere Rechenkerne. Sprich: die CPU Auslastung steigt.
Wenn mehrere Rechenkerne arbeiten, dann bedeutet das leider nicht, dass es auch wirklich schneller geht.
Das kommt in der Informatik, wie im echten Leben auch, auf die Aufgabe und die Aufgabenverteilung an.
Beispiele aus dem realen Leben:
Ein Mauer baut ein Haus. Ein zweiter Mauer hilft ihm => oft doppelt so schnell.
1000 Namen sollen alphabetisch sortiert werden. 2 Personen nehmen sich je 500 Namen, sortieren die, und anschließend sortiert noch eine Person diese 2 Stapel. => deutlich schneller als doppelt so schnell!
Ein Maurer und ein Maler stehen für das neue Haus bereit. Maler kann im Grunde erst arbeiten, wenn der Maurer fertig ist. => nicht doppelt so schnell.
100000 Maurer bauen ein kleines Haus. => Es ist nicht 100000 mal schneller. Die Maurer stehen sich gegenseitig auf den Fußen, es wird wesentlich langsamer.
...
So ist das in der Informatik auch. Je nachdem wie man es programmiert können mehrere Rechenkerne extrem hilfreich sein, aber auch extrem schaden. Das ist leider nicht immer so einfach zu sagen bzw. zu programmieren.
Wenn Sie z.B. mein Programm ausprobieren (siehe
viewtopic.php?f=71&t=19&start=10#p7820 ), dann werden sie z.B. sehen, dass es nur einen Rechenkern nutzt. Trotzdem ist es nicht gerade langsam
Langfristig werde ich aber auch versuchen Aufgaben auf mehrere Kerne zu verteilen. Leider kann ich mehrere Kerne nicht an die gleichen Aufgabe setzen, sie würden sich nur gegenseitig auf den Füßen stehen. Daher wird mein Trick darin bestehen das Programm einfach mehrfach unabhängig voneinander zu starten, da das Lösen des Problems leider unterschiedlich lange dauert.
Angenommen mit meinem Programm wollen Sie 4 mal blocken, dann kann es z.B. 1 Sekunde, 30 Sekunden, 1 Minute und 5 Minuten dauern.
Starte ich zufällig mit dem Weg, der nur 1 Sekunde dauert, dann hilft es nicht, wenn ich die anderen Wege noch ausprobiere. Mein Programm wird nicht schneller.
Starte ich aber zufällig mit dem Weg, der 5 Minuten dauert, dann hilft es, wenn ich gleichzeitig die anderen Wege ausprobiere. Dann würde ich nämlich parallel die 1 Sekunde Lösung finden und mein Programm wäre somit 600 mal schneller als vorher (obwohl es nur 4 Rechenkerne nutzt).
Bei einer CPU kommen jetzt leider zwei Besonderheiten:
Wenn nur 1 (oder wenige) Rechenkerne arbeiten, dann dürften die oft viel schneller arbeiten als wenn alle Rechenkerne gleichzeitig arbeiten. Bei ihrer CPU beträgt die "Geschwindigkeit" der CPU 2,5 GHz, wenn alle Kerne voll arbeiten. Arbeitet aber nur ein Rechenkern alleine, dann darf er 24% schneller arbeiten und auf 3,1 GHz beschleunigen.
Zweite Besonderheit: Viele Rechner haben „virtuelle“ Kernverdopplung. Es sieht so aus wie zwei Rechenkerne, sind es aber in Wirklichkeit nicht. Ob dieses sinnvoll genutzt werden kann kommt wieder auf die Aufgabe an.
Beispiel:
1 Rechenkern mit Kernverdopplung soll zwei Aufgaben gleichzeitig machen: (Reales Leben)
a) Deine Person soll 2 verschiedene Lieder singen. => geht nicht gleichzeitig. Gleichzeitig erzeugt nur Mist. Muss hintereinander gemacht werden.
b) Die Person soll 1 Lied singen und gleichzeitig Auto fahren. => geht gleichzeitig. Die Aufgaben werden also im Prinzip doppelt so schnell gemacht.
Spielen sie doch einfach mal mit den verschiedenen Parametern der verschiedenen Programme um ein Gefühl dafür zu bekommen. Ich würde mich sehr freuen, wenn Sie mal darüber berichten welche Programme (im Durchschnitt) ihren Datensatz am schnellten löst.
Schönen Gruß