Skip to content

Commit e66f169

Browse files
committed
perf(cdk): adjust default frameFrate and frame budget computation
1 parent 3eec2f7 commit e66f169

File tree

2 files changed

+6
-1
lines changed

2 files changed

+6
-1
lines changed

libs/cdk/internals/scheduler/src/lib/scheduler.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -419,6 +419,9 @@ function forceFrameRate(fps) {
419419
// reset the framerate
420420
yieldInterval = 5;
421421
}
422+
// be aware of browser housekeeping work (~6ms per frame)
423+
// according to https://developers.google.com/web/fundamentals/performance/rendering
424+
yieldInterval = Math.max(5, yieldInterval - 6);
422425
}
423426

424427
const performWorkUntilDeadline = () => {

libs/cdk/src/lib/render-strategies/concurrent-strategies.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,9 @@ import {
1414
} from '../model';
1515
import { coalescingManager } from '@rx-angular/cdk/coalescing';
1616

17-
forceFrameRate(60);
17+
// set default to 30fps, actually matching other frameworks defaults:
18+
// https://github.com/WICG/scheduling-apis/blob/main/misc/userspace-schedulers.md#appendix-scheduler-case-studies
19+
forceFrameRate(30);
1820

1921
const noPriorityStrategy: RxStrategyCredentials = {
2022
name: 'noPriority',

0 commit comments

Comments
 (0)