10 Threads: Zähle bis: 10000000000
Threads: 10 * 1000000000
-------------------
Thread1: 34136 ms
Thread2: 33778 ms
Thread3: 33988 ms
Thread4: 34395 ms
Thread5: 33931 ms
Thread6: 34050 ms
Thread7: 34049 ms
Thread8: 34210 ms
Thread9: 34041 ms
Thread10: 34092 ms
-------------------
AllThreads: Ø 34067 ms / Gesamt: 340670 ms
NoThread: 224091 ms
Mit 6 Threads: Zähle bis: 10000000000
Threads: 6 * 1666666666
-------------------
Thread1: 39584 ms
Thread2: 39901 ms
Thread3: 39729 ms
Thread4: 39412 ms
Thread5: 39818 ms
Thread6: 39831 ms
-------------------
AllThreads: Ø 39712 ms / Gesamt: 238275 ms
NoThread: 224293 ms
4 Threads: Zähle bis: 10000000000
Threads: 4 * 2500000000
-------------------
Thread1: 57902 ms
Thread2: 57628 ms
Thread3: 57960 ms
Thread4: 58145 ms
-------------------
AllThreads: Ø 57908 ms / Gesamt: 231635 ms
NoThread: 224394 ms
Das würde doch bedeuten, das ein/kein Thread ca. 224 sek. braucht und bei 10 Threads (wenn man davon ausgeht das es wirklich parallel läuft) nur 34 sek. also ca. 6,5x so schnell.
Bei 6 Threads dann 5,7x und bei 4 Threads ist es immerhin noch 3,8x. Bei 2 Threads ist es fast genau doppelt so schnell wie ein ein einziger Thread.
weil einfach einfach einfach ist ... mach' ich es anders
Aufgrund euerer Anregungen habe ich meinen Code (zum sortieren ein auf MERGE Sort basierter Algo) nochmals angesehen.
Nun habe ich festgestellt wenn in einem Thread häufig die Anweisungen Insertelement und Deleteelement auftauchen, die skalierbarkeit schlecht ist.
Dies habe ich nun umprogrammiert, so dass keine neuen Elemente erzeugt werden, und siehe das die Leistungsteigerung stellt entsprechend der Kernzahl ein.