workload
Local fixture served inside each isolated worker. Static, canvas, DOM-scroll, and multi-page workloads use the same authored flow on both backends.
Measured locally · raw runs retained
End-to-end recording measurements across static, animated, DOM, multi-page, and 4K workloads. Every value is the median of isolated process-tree runs on the same machine.
Results from this run
1920×1080 · 30 FPS
A settled page with no animation after load.
| Backend | Distinct FPS | Repeated | Peak RSS | Sampled CPU | Startup | Finalize | Output |
|---|---|---|---|---|---|---|---|
| Embedded CEF | n/a | n/a | 1093 MiB | 93% | 212 ms | 148 ms | 0.04 MiB |
| Playwright | n/a | n/a | 745 MiB | 26% | 161 ms | 358 ms | 0.06 MiB |
1280×720 · 30 FPS
Continuous requestAnimationFrame canvas motion at a lightweight output size.
| Backend | Distinct FPS | Repeated | Peak RSS | Sampled CPU | Startup | Finalize | Output |
|---|---|---|---|---|---|---|---|
| Embedded CEF | 30.0 | 0.0% | 1006 MiB | 76% | 218 ms | 128 ms | 0.08 MiB |
| Playwright | 30.0 | 0.0% | 665 MiB | 57% | 162 ms | 83 ms | 0.09 MiB |
1920×1080 · 60 FPS
Continuous canvas motion at the beta default 1080p60 capture target.
| Backend | Distinct FPS | Repeated | Peak RSS | Sampled CPU | Startup | Finalize | Output |
|---|---|---|---|---|---|---|---|
| Embedded CEF | 60.0 | 0.0% | 1246 MiB | 239% | 219 ms | 194 ms | 0.16 MiB |
| Playwright | 55.3 | 7.8% | 853 MiB | 122% | 165 ms | 95 ms | 0.18 MiB |
1920×1080 · 60 FPS
A dense card grid continuously translated to exercise layout, paint, and capture.
| Backend | Distinct FPS | Repeated | Peak RSS | Sampled CPU | Startup | Finalize | Output |
|---|---|---|---|---|---|---|---|
| Embedded CEF | 60.0 | 0.0% | 1286 MiB | 387% | 275 ms | 294 ms | 1.01 MiB |
| Playwright | 60.0 | 0.0% | 906 MiB | 341% | 207 ms | 200 ms | 1.22 MiB |
1920×1080 · 60 FPS
Two active browser sources with two authored page switches during recording.
| Backend | Distinct FPS | Repeated | Peak RSS | Sampled CPU | Startup | Finalize | Output |
|---|---|---|---|---|---|---|---|
| Embedded CEF | n/a | n/a | 2111 MiB | 549% | 495 ms | 14037 ms | 0.26 MiB |
| Playwright | n/a | n/a | 1472 MiB | 445% | 410 ms | 508 ms | 0.32 MiB |
3840×2160 · 30 FPS
Continuous canvas motion at the maximum 3840x2160 capture size.
| Backend | Distinct FPS | Repeated | Peak RSS | Sampled CPU | Startup | Finalize | Output |
|---|---|---|---|---|---|---|---|
| Embedded CEF | 0.8 | 97.2% | 1952 MiB | 560% | 441 ms | 8666 ms | 0.18 MiB |
| Playwright | 17.6 | 41.3% | 2018 MiB | 445% | 441 ms | 635 ms | 0.27 MiB |
How to read this
Local fixture served inside each isolated worker. Static, canvas, DOM-scroll, and multi-page workloads use the same authored flow on both backends.
One excluded warmup run per backend, then alternating paired trials in fresh worker/browser/encoder process trees.
Canvas and DOM workloads encode monotonically increasing frame IDs into pixels; FFmpeg decodes them from source WebM. Static and multi-page workloads omit cadence scores.
End-to-end silent recording from worker launch through media probing. Native uses CEF/I420/VP9; Playwright uses Chromium screencast MJPEG/VP9. Audio is off because Playwright recording does not expose page-audio capture; embedded recording audio and both live-stream audio paths are verified separately. Streaming performance is outside this recording suite.
200 ms ps samples sum RSS and cumulative CPU across the worker and discovered descendants. CPU percent is sampled CPU seconds divided by total wall time and may exceed 100% across cores.
RSS can double-count shared pages, short-lived processes can escape sampling, and GPU memory and energy are not measured. Results describe this host and revision, not every website or platform.
Lower RAM, CPU, startup, and finalization are better. Higher distinct FPS is better. Output size is only comparable when cadence is similar. Static and multi-page scenarios intentionally omit pixel cadence because their frames cannot be scored with one continuous source marker. GPU memory is not included.