Das mit den Arrays und Cache werd ich mir im Laufe den Tages nochmal genauer durchlesen.
Hab grade nochmal diesen Tipp befolgt:
[QUOTE=cmrudolph]Die Geschwindigkeitssteigerung durch Parallelisierung lässt sich ggf. noch ein wenig erhöhen, wenn du mit einem Executor arbeitest und eine feste Anzahl an Threads vorgibst (1,5x Anzahl Kerne). Da sparst du einen Haufen Threads zu erstellen und es muss weniger zwischen Threads geswitched werden.
[/QUOTE]
Hatte nach meiner „trivialen“ Version erst mit einem CachedThreadPool gearbeitet. Der hat natürlich Threads ohne Ende rausgehauen.
Ich kam damit auf folgende Werte:
[spoiler]
Groesse der Matrix 64
Seriell: 2
Parallel: 18
Speedup 0.1111111111111111
Transponiert Parallel: 18
Transponiert Seriell: 6
Speedup 0.3333333333333333
Groesse der Matrix 128
Seriell: 4
Parallel: 32
Speedup 0.125
Transponiert Parallel: 26
Transponiert Seriell: 2
Speedup 0.07692307692307693
Groesse der Matrix 256
Seriell: 26
Parallel: 6
Speedup 4.333333333333333
Transponiert Parallel: 10
Transponiert Seriell: 14
Speedup 1.4
Groesse der Matrix 512
Seriell: 244
Parallel: 70
Speedup 3.4857142857142858
Transponiert Parallel: 24
Transponiert Seriell: 116
Speedup 4.833333333333333
Groesse der Matrix 1024
Seriell: 10832
Parallel: 3190
Speedup 3.3956112852664577
Transponiert Parallel: 158
Transponiert Seriell: 953
Speedup 6.031645569620253
[/spoiler]
Also schonmal etwas höher.
Bin dann auf den FixedThreadPool gewechselt.
[spoiler]
Groesse der Matrix 64
Seriell: 1
Parallel: 14
Speedup 0.07142857142857142
Transponiert Parallel: 13
Transponiert Seriell: 5
Speedup 0.38461538461538464
Groesse der Matrix 128
Seriell: 4
Parallel: 28
Speedup 0.14285714285714285
Transponiert Parallel: 16
Transponiert Seriell: 2
Speedup 0.125
Groesse der Matrix 256
Seriell: 38
Parallel: 8
Speedup 4.75
Transponiert Parallel: 4
Transponiert Seriell: 17
Speedup 4.25
Groesse der Matrix 512
Seriell: 253
Parallel: 110
Speedup 2.3
Transponiert Parallel: 19
Transponiert Seriell: 113
Speedup 5.947368421052632
Groesse der Matrix 1024
Seriell: 10888
Parallel: 3094
Speedup 3.5190691661279896
Transponiert Parallel: 149
Transponiert Seriell: 994
Speedup 6.671140939597316
[/spoiler]
Das ist das Ergnis wenn ich mit 12 Threads arbeite. Erziele mit ~12 Threads die besten Werte. Auffällig ist auch, dass der Speedup von normal-seriell zu normal-parallel bei einer Matrixgröße von 512x512 immer sehr stark abfällt.
War ja beim CachedThreadPool schon etwas zu sehen aber mit dem FixedThreadPool fällt es auch nach mehr als 20 Durchläufen auf, dass es wesentlich stärker droppt. Auch wenn ich die Anzahl der Threads ändere.
Naja wird warsch. auch irgendwie mit dem Cache zusammenhängen. Bin erstmal ganz zufrieden ![:slight_smile: :slight_smile:](https://forum.byte-welt.net/images/emoji/twitter/slight_smile.png?v=9)