PERFORMANCE

Fifty thousand items, measured.

A library grows for years. These are the numbers Teserra 1.3.0 gives on real hardware with ten thousand and fifty thousand items, how we measured them, and what changed to get there.

10,000 items50,000 items
Warm start, grid visibleOpen the app, see your library. 1.7 s2.4 s
Cold start, grid visibleFirst launch after a rebuild: every sidecar is read back from disk. 3.6 sabout 10 s
Main query, all itemsWhat the grid asks the database on each refresh: time and payload. 93 ms · 2.2 MB366 ms · 11.3 MB
Typing in searchFrom a keystroke to the filtered grid, three different words. 105 to 157 ms204 to 357 ms
ScrollingTime to render one screen-height jump, median and 95th percentile. 33 ms median · 64 ms p9533 ms median · 49 ms p95
Memory at restAfter start and the tests above, thumbnails done. 139 MB246 MB

Method. Synthetic vaults built from 1,500 real PNGs repeated, 18 collections, 30 tags, titles on a third of the items. Debug build with the production front end, so a shipped Teserra is faster, not slower. Each number is one run on a quiet machine, rounded. Machine: MacBook Pro, Apple M5 Pro, 24 GB, macOS 15. Measured on September 19, 2026.

5 ms

per image to index for visual search, on the Mac's GPU. Ten thousand images in under a minute.

0.6 MB

of front-end code loaded at start. The Wall, PDF, video, fonts and Studio load when you open them.

8 ms

to check 842 sidecars against the database at a warm start. 198 ms cold.

1000 px

thumbnails, generated in parallel on every core, written atomically, never half-drawn.

WHAT CHANGED IN 1.3.0

The grid stopped asking for everything.

Version 1.3.0 slimmed what the database sends to the grid, redraws only the item you touched, and groups refreshes while imports run in the background. Same machine, same vaults, before and after.

Main query, 10,000 items640 ms · 6.7 MB93 ms · 2.2 MB
Main query, 50,000 items884 ms · 35.7 MB366 ms · 11.3 MB
Scroll p95, 10,000 items460 ms, peaks at 1.6 s64 ms, peaks at 79 ms
Typing, 10,000 items470 to 650 ms105 to 157 ms
Memory at rest, 50,000 items611 MB246 MB
Rating or tagging one itemreloads the whole gridredraws that item
WHERE IT STILL HURTS

A cold start on fifty thousand items reads every sidecar back from disk, about ten seconds. Generating fifty thousand thumbnails the first time takes minutes, not seconds, and runs in the background while you work. Typing at fifty thousand items lands between two and four tenths of a second. These are the next things we measure again.

Try it on your own library