DiffViewer Performance

Render a whole change set, one DiffViewer per file, and measure the diff model, the first file on screen, the full render, long tasks, DOM size and heap, then scroll the list and time collapse, expand and view switches. Multi-file workloads mix many small files with a few very large ones.

Run metrics

200 files50,827 file lines0 diff linesunifiedhighlighted
Diff model (createDiffFile)—
First file on screen—
Full render—
Long tasks (count / total)—
DOM nodes—
Heap growth—
Scroll (fps / dropped / long tasks)—
Last interaction—
Full render runs from the commit to the next painted frame; first file on screen runs from the commit to the paint after a rendered diff first appears. A long task is a main-thread task over 50 ms; a dropped frame is a gap over 20 ms. A reading the browser cannot give (long tasks without the Long Tasks API, a heap reading that does not move) shows as a dash. Badges name the workload the run was measured on; the scroll and interaction readings name the view they were taken in. The scroll test moves the list from top to bottom over four seconds.