Hallo,
mir ist das Webworker-Konzept nur oberflächlich vertraut, darum nur ein paar allgemeine Denkanstöße.
Mir geht es aber darum, wie man WebWorker sinnvoll programmiert, damit man optimal die Leistung einer MultiCore-CPU anspricht.
Das hängt sehr stark von der Aufgabe ab.
Kann man die Aufgabe in Teilaspekte zerlegen, die voneinander unabhängig sind? - Dann ist eine Aufteilung auf mehrere Threads möglicherweise sinnvoll.
Ist die Aufgabe aber eher auf eine sequentielle Bearbeitung angewiesen, ist also der nächste Schritt vom vorherigen abhängig? - Dann bringt die Aufteilung relativ wenig.
Zum Beispiel: Ist es eher besser, die Arbeit auf >1000 Worker zu verteilen?
IMO eher nicht. Dann ist der Verwaltungs-Overhead so groß, dass er den möglichen Vorteil der Parallelisierung aufzehrt.
Ich empfehle daher, nicht mehr Threads (Workers) zu generieren, als eine typische, durchschnittliche CPU Cores hat, zum Beispiel vier. Bei einer echten High-End-CPU mit 12 Cores verschenkst du damit wohl ein bisschen, aber die Mehrheit der CPUs kann das dann ganz gut umsetzen und optimieren.
Just my 2 cents,
Martin
Ach, macht ihr da Ohm doch Watt ihr Volt.