The numbers, and how we got them.
Both apps ran on the same PC: Intel Core i9-13900K (8 P-cores, 16 E-cores), 32 GB RAM, NVIDIA GeForce RTX 5090. One PC, dual boot. Every figure below is a median and keeps the conditions it was measured under. Where we measured only Puck, we say so.
Drawn to scale.
Each pair of circles has areas in proportion to the measurement. Puck is the oxide one. Windows 11, against GitHub Desktop 3.6.7.
Cold start, as laps
Windows 11
| Measure | Puck | GitHub Desktop 3.6.7 |
|---|---|---|
| Cold start to window | 0.191 s | 0.469 s |
| Memory at rest (USS) | 23.7 MiB | 112.1 MiB |
| Memory, 10,000 changed files (USS) | 27.9 MiB | 127.6 MiB |
| CPU at rest, share of one core | 0.34 % | 0.31 % |
| Installed size | 82.8 MiB program | 582 MiB |
| Scroll 10,000 changed files, 95th-percentile frame | 2.8 ms | not measured |
| Scroll 100,000 commits, 95th-percentile frame | 2.3 ms | not measured |
| Open a 5,000-line diff | 37 ms | not measured |
| Open the command palette | 10.3 ms | no palette |
At rest, the two use about the same CPU on Windows. Puck’s installed program is 82.8 MiB; its Windows installer adds MinGit beside it, so you don’t need Git installed.
Linux
| Measure | Puck | Desktop Plus 3.6.1 | Puck uses |
|---|---|---|---|
| Memory at rest (PSS, 60 s after start) | 127.7 MiB | 378.3 MiB | 3.0× less |
| Memory, 10,000 changed files (PSS) | 145.2 MiB | 440.4 MiB | 3.0× less |
| CPU at rest, share of one core | 0.28 % | 0.93 % | 3.3× less |
| Installed size | 100 MiB | 646 MiB | 6.4× smaller |
PSS counts each process’s share of shared memory across the app’s process tree: Desktop Plus runs seven processes, Puck one. About 60 MiB of Puck’s figure is what any GPU-drawn app pays on this machine for the NVIDIA driver’s libraries and its own code. Downloads: deb 18.6 MiB, pacman 23.2 MiB, AppImage 26.1 MiB.
Frame times on Linux
| Scenario | Budget | Performance profile | Balanced profile |
|---|---|---|---|
| Scroll 10,000 changed files, 95th-percentile frame | 16.6 ms | 1.9 ms | 7.8 ms |
| Scroll 100,000 commits, 95th-percentile frame | 16.6 ms | 1.9 ms | 8.1 ms |
| Open a 5,000-line diff | 150 ms | 10.3 ms | 12.0 ms |
| Show a git status result, after Git exits | 50 ms | 6.1 ms | 6.7 ms |
| Open the command palette | 16 ms | 9.6 ms | 12.1 ms |
| 24 UI flows, every frame within 16.6 ms | all | 24 of 24 | 22 of 24 |
On the balanced power profile the cores idle near 800 MHz and short frames end before the clock rises, so two of 24 flows drew one frame of 17 to 33 ms.
What these numbers don’t say
The Electron apps have no frame profiler hooks, so we couldn’t time their scrolling, diffs or palettes. Puck’s frame times show it’s fast. They don’t show it scrolls some number of times faster than GitHub Desktop, and we don’t claim that.
Cold start wasn’t measured on Linux: the harness finds windows with xdotool, which can’t see Wayland windows. Windows and Linux memory figures use different measures (USS and PSS) and can’t be compared with each other. The harness and raw results are kept with Puck’s source, under bench/.