JürgenB: Multithreading in JavaScript

Beitrag lesen

Hallo molily,

Die meisten Operationen in JavaScript fallen in diese Kategorien:

  1. Interaktion mit dem DOM; Layouting und Painting

  2. Input/Output (hauptsächlich Festplatte und Netzwerk)

  3. Mathematische Berechnungen, Datentransformationen

  4. ist am schlechtesten optimierbar und parallelisierbar. Man kann höchstens in »Transaktionen« arbeiten und das Ende einer Reihe von Änderungen zeichnen

  5. ist immer asynchron und nicht-blockend, also von Natur aus parallel; hier muss oft sogar eine Sequenz hergestellt werden.

  6. ist einfach parallelisierbar, wenn kleine Häppchen rein funktional berechnet werden können.

Web Worker bieten nur für 3. einen Vorteil, und auch nur bei clientseitigem JavaScript.

1. und 2. laufen möglicherweise non blocking, bleiben aber afaik in einem Thread. Ich habe hier noch nie größere CPU-Auslastungen als 100%/(Anzahl CPU-Kerne) beobachtet.

Mit Web Worker kann man die CPU-Auslastung auf 100% bringen, weil die Worker-Threads unabhängig voneinander laufen, also "echt parallel".

Gruß, Jürgen