Skip to content

perf(desktop): page speed of WireCat Desktop on a real store - #345

Merged
leemour merged 1 commit into
mainfrom
perf/desktop-page-speed
Nov 10, 2026
Merged

leemour merged 1 commit into
mainfrom
perf/desktop-page-speed

Conversation

@leemour

@leemour leemour commented Nov 10, 2026

Copy link
Copy Markdown
Member

Task

Measure why WireCat Desktop pages feel slow on the owner's real store, and what each page waits for.

Why

The owner found Desktop slow and buggy around memo and asked whether it can be made really fast. The plan for Desktop,
memo and cli-core needs numbers per command and per page, not guesses.

What

  • performance/desktop/page-speed/README.md: why, setup, results, what it showed, what was not measured.
  • scripts/: the command list generator (make-commands.mjs, writes outside the repo), measure-commands.mjs
    (fresh process against a warm server), measure-fanout.mjs (a page's reads at once through pools of 1, 2, N),
    measure-first.mjs (first request on a fresh server), click-speed.mjs (click to next frame in headless Chrome).
  • results.txt: totals only. Linked from performance/desktop/README.md and performance/README.md.

Headlines: a warm server 30 to 330 ms against a fresh process 650 to 960 ms; people list 3.7 to 4.2 s for any
limit on about 114,000 people; Desktop's pool of 2 gives Memory nothing over all fresh (1081 against 1107 ms);
clicks paint in 24 to 96 ms in a production build.

Testing

Each script ran on the machine described in the page; biome check, rumdl, cspell and markdownlint-cli2 pass on
the new files. Real store data: read only, --no-record, counts and bytes only.

🤖 Generated with Claude Code

Times the memo reads each Desktop page sends, as a fresh process and through a
warm `memo commands --serve` server, a page's reads fired together through
pools of 1, 2 and N servers, the first request on a fresh server, and click to
next frame in a production build with mock data.

Headlines: a warm server answers in 30 to 330 ms what a fresh process answers
in 650 to 960 ms; `people list` takes 3.7 to 4.2 s for any limit on a store of
about 114,000 people; Desktop's pool of 2 gives the Memory page nothing over
all fresh processes (1081 against 1107 ms); clicks paint in 24 to 96 ms.

Real store totals only: no content, names or refs.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@leemour
leemour merged commit d2f6005 into main Nov 10, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant