CapFuture
Lt. Commander
- Registriert
- März 2003
- Beiträge
- 1.332
Es gibt ein paar Regeln, was das Dimensionieren eines Threadpools bzw. die Anzahl der Threads angeht.
Da das Mandelbrotmengenproblem ein rein CPU/Speicher limitiertes Problem ist, skalliert das ganze mit der Anzahl der CPUs. Bei solchen Problemen kann man als Faustregel #CPUs + 1 bzw. #CPUs * 2 + 1 nehmen. Mehr bringt nichts.
Ansonsten kann empfehlen von 2Dimensionalen Arrays auf 1Dimensionalen Arrays zu wechseln und die Arrayposition dann entsprechend auszurechnen oder vielleicht eine HashMap ggf. zweckzuentfremden. Denn dann kannst du mit sehr schönen Thread-safen Konstrukten wie CopyOnWriteArrayList oder ConcurrentHashMap arbeiten.
Wenn das zu viel Aufwand ist oder nicht die gewünschten Ergebnisse liefert, ginge auch das finalizen von Objekten und Variablen, d.h. das setzen des Schlüsselwortes final vor die Variablen deklaration. Dies entspricht einer der Deklaration einer Konstanten bzw. eines konstanten Pointers was zu besseren Codeoptimierung in der Java VM/Hotspot führen sollte (zumindest bis Java 6).
Ebenfalls wäre es praktisch, wenn du dir die JVM Parameter -server, -XX:+UseConcMarkSweepGC und das erhöhen des inizialien Heap und Stack Speichers.
Da das Mandelbrotmengenproblem ein rein CPU/Speicher limitiertes Problem ist, skalliert das ganze mit der Anzahl der CPUs. Bei solchen Problemen kann man als Faustregel #CPUs + 1 bzw. #CPUs * 2 + 1 nehmen. Mehr bringt nichts.
Ansonsten kann empfehlen von 2Dimensionalen Arrays auf 1Dimensionalen Arrays zu wechseln und die Arrayposition dann entsprechend auszurechnen oder vielleicht eine HashMap ggf. zweckzuentfremden. Denn dann kannst du mit sehr schönen Thread-safen Konstrukten wie CopyOnWriteArrayList oder ConcurrentHashMap arbeiten.
Wenn das zu viel Aufwand ist oder nicht die gewünschten Ergebnisse liefert, ginge auch das finalizen von Objekten und Variablen, d.h. das setzen des Schlüsselwortes final vor die Variablen deklaration. Dies entspricht einer der Deklaration einer Konstanten bzw. eines konstanten Pointers was zu besseren Codeoptimierung in der Java VM/Hotspot führen sollte (zumindest bis Java 6).
Ebenfalls wäre es praktisch, wenn du dir die JVM Parameter -server, -XX:+UseConcMarkSweepGC und das erhöhen des inizialien Heap und Stack Speichers.