Event loop scheduling improvement
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 5/5
- Geschätzter Aufwand
- Über eine Woche
- Anfängerfreundlichkeit
- 35/100
- Issue-Typ
- Feature
- Klarheit
- Größtenteils klar
- Aktivitätsstatus
- Veraltet
- Tech-Stack
- javascript, swift, wasm
- Bereich
- performance, web-dev
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.
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.
- Vorherrschende Sprache
- Swift
- Sterne
- 986
- Forks
- 76
- Ø Merge
- 21 Std. 11 Min.
- Gemergte PRs (30 T.)
- 4
Beitragsleitfaden
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus swiftwasm/JavaScriptKit
-
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 55/100
swiftwasm/JavaScriptKit#793 ·
-
swiftwasm/JavaScriptKit#785 · 1 zugewiesene Person ·
-
[SwiftBuild] Preserve duplicate archive members when SwiftBuild expands static archives for linking Offen
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 48/100
swiftwasm/JavaScriptKit#781 · 3 Kommentare ·
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 25/100
swiftwasm/JavaScriptKit#773 ·
-
swiftwasm/JavaScriptKit#767 · 1 zugewiesene Person ·
Alle Issues in swiftwasm/JavaScriptKit
Ähnliche Issues
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 88/100
manaflow-ai/cmux#13763 ·
-
type: feature request
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
googleapis/google-cloud-swift#1036 · 1 Kommentar ·
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 78/100
wultra/mtoken-sdk-ios#253 ·
-
area:dictation documentation P2
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
uttrflow/uttrflow-swift#1180 ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100