Files
photocraft/docs
RickiNanoandClaude Opus 5.5 5314c8e11b perf(bench): split command and refresh time; refresh like the app; stop rows timing setup
perf_scenarios rows that time a command and then the canvas refresh now also record each part
(cmd_samples_ms, refresh_samples_ms; samples_ms stays their sum, so budgets and the baseline are
unaffected), the refresh kinds (gpu-rect, gpu-full, rect/full on the CPU compositor, none) and the
CpuReason kind of any fallback. The console line ends with the medians (Summary::of's p50, as
p50_ms uses).

Bench::refresh follows the app's damage_since: it tracks the (document, revision) the canvas
shows and redraws nothing at the same revision, the last edit's rect one revision on, else
everything; drag_frame invalidates it. A timed refresh that also drew untimed setup edits, or
redrew everything because the canvas showed nothing or another document, is reported on stderr.

Rows that timed setup:
- P8-P11 (duplicate/paste a 12 MP layer): the fresh layer and the copied clipboard are refreshed
  before the timer; the "first" rows delete what each sample added, so the stack no longer grows
  by two 12 MP layers per sample; the repeat rows get their own source and clipboard, warm up
  first, and are set up only when --only/--group selects them
- Spot Healing 10 MP refreshes before its timer, so sample 1 no longer redraws the new document
  and the Content-Aware Fill row's edits
- Open PSD drops the previous sample's session before the timer and frees its GPU textures and
  compositor pages (GpuCanvas::retain, as closing a document does); gpu_bytes 293 -> 112 MB

Ported from perf/fix-measurement, which is too far behind main to merge; its xtask baseline
merge, regressions_fail setting, 40-sample rows and nightly workflow change are left out.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-01 21:20:35 +01:00
..
…
…
…
…
…
2026-10-31 04:25:34 +00:00
…