swiftwasm / swiftwasm/JavaScriptKit
Event loop scheduling improvement
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Swift
- Sterne
- 986
- Forks
- 76
- Ø Merge
- 21 Std. 11 Min.
- Gemergte PRs (30 T.)
- 4
Beschreibung
Motivation
Think the following situation:
- The browser event loop has a pending event that fires an event listener that schedules high-priority work to JSKit's executor.
- But the current JSKit's executor loop does not yield its control to JS event loop until all enqueued works are done
- Even if some of them are low-priority
It resulted in the higher priority works planned to be enqueued to JSKit's executor are blocked by lower priority works that are already enqueued even though browser engine knows about the pending event.
Outcome
- Performance gain
Potential solution
Although yielding control to JS engine for every Swift job is not a realistic approach due to high overheads, but it's still considerable to yield control when certain time is spent for the current JSKit's executor loop.
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginnen Sie mit der Executor-Schleife in Sources/JavaScriptEventLoop/JobQueue.swift, insbesondere mit dem verlinkten Abschnitt, und verfolgen Sie, wie eingereihte Swift-Jobs ausgeführt werden, bevor die Kontrolle an die Browser-Ereignisschleife zurückkehrt. Definieren und bewerten Sie einen Scheduling-Ansatz, der nach einer begrenzten Zeit im Executor die Ausführung abgibt. Der Abschluss soll daran erkennbar sein, dass ausstehende Arbeit mit höherer Priorität nicht mehr durch Jobs mit niedriger Priorität blockiert wird und die Auswirkungen auf die Performance gemessen werden.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- javascript, swift, wasm
- Bereich
- performance, web-dev
- Issue-Typ
- Feature
- Schwierigkeit
- 5/5
- Geschätzter Aufwand
- Über eine Woche
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 35/100