perf_compare
Compares two saved GPU performance recordings—reference and after-change—to show FPS, frame pacing, memory, encoder, and command-buffer changes, with optional Markdown tables for PR comments.
Instructions
Compares two saved recordings (names from perf_runs), a the reference and b the run after a change: the
headline numbers (FPS, GPU ms, frame pacing, memory), then what changed in the GPU work and where: encoders and
command buffers per frame, the share of encoders under short_us, the GPU's idle time, and each encoder label's
count and GPU ms per frame, largest change first. layer says whether both ran on the same translation layer:
with different layers it compares layers, not one change. A Windows run against a Metal run has measure: the
GPU ms and Metal memory differ in kind and the encoders exist only in Metal, so use FPS, its lows, stutter and
jitter. Recordings with under 100 frames are flagged: too short to compare. With markdown true the result also has
markdown: the same numbers as tables for a PR comment. skip_s leaves out the first seconds of each recording,
where shaders compile and resources load: the GPU numbers, hitches and Metal memory are recomputed from the
per-frame files without them, and skipped_s says it; thermal state, process memory and encoders stay whole-run.
screen appears when one run was recorded with the screen locked and the other not: FPS is then not comparable.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| a | Yes | run name from perf_runs: the reference, such as the run before a change | |
| b | Yes | run name from perf_runs: the run to compare against a | |
| skip_s | No | seconds to leave out at the start of each recording, where shaders compile and resources load; 0 (default) keeps all. The GPU numbers, hitches and Metal memory are recomputed without them | |
| markdown | No | also return the numbers as Markdown tables, default false | |
| short_us | No | an encoder under this GPU time counts as short: 10, 25 (default), 50, 100, 250, 500 or 1000 |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||