-
-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Open
Description
Description
Several hot code paths in dash.js use Object.keys() patterns that create unnecessary array allocations during playback. On resource-constrained devices like Smart TVs, these allocations contribute to garbage collection pressure, potentially causing playback stutters.
Affected Areas
| File | Function | Frequency | Issue |
|---|---|---|---|
AbrController.js |
_onVideoElementResized |
Every video resize | Nested Object.keys().forEach() |
EventController.js |
_iterateAndTriggerCallback |
Every 100ms | Object.keys() in nested loops |
EventController.js |
_removeOutdatedEventObjects |
Every 100ms | Object.keys().length === 0 check |
HTTPLoader.js |
_addPathwayCloningParameters |
Every HTTP request | Object.keys().map() |
Proposed Solution
Replace Object.keys() patterns with for..in loops which iterate directly without creating intermediate arrays.
Expected Impact
- Reduces ~30-50 array allocations per second during playback
- Lower GC pressure on memory-constrained devices
- More fluid playback on Smart TVs and embedded devices
Related PR
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels