As of 2026-09-14. Engine: MarkEngineV3, Mardo's own, by Floof Logic. Full, auditable source: ENGINEERING.md on GitHub · What produces these: /engineering/
Benchmarks
MarkEngineV3's numbers, each with the gate, the machine, and the date behind it. What produces them is in Engineering; the full, auditable source of both parts is ENGINEERING.md on GitHub.
How these are measured
Latency and memory come from Floof Logic's performance gate, which measures MarkEngineV3 with the app launched against a hard per-frame maximum of 16.67 ms where one applies; no percentile excuses a missed maximum. Large-file figures come from the large-file qualification gate on deterministic generated corpora with a matched native control. Mardo's source is private, so these gates are not runnable by a reader; the value of this page is that every number names the gate that made it, the machine, and the date, and its history here is a public diff.
Speed
| What | Worst | Median | Samples | Date |
|---|---|---|---|---|
| First paint, 1 KiB README | 3.77 ms | 3.33 ms | 50 | 2026-09-14 |
| First paint, 1 MiB prose | 3.16 ms | 2.85 ms | 30 | 2026-09-14 |
| First paint, 80 KiB rich Markdown | 3.15 ms | 2.92 ms | 30 | 2026-09-14 |
| First paint, 8 MiB manual | 4.67 ms | 4.44 ms | 20 | 2026-09-14 |
| First paint, 16 MiB adversarial | 3.46 ms | 3.11 ms | 10 | 2026-09-14 |
| Keystroke to committed glyph, 1 MiB prose | 7.08 ms | 2.77 ms | 10,000 | 2026-09-14 |
| Keystroke in one 700 KiB paragraph | 5.14 ms | 4.67 ms | 200 | 2026-09-14 |
| Enter editing, caret placed, 8 MiB | 12.10 ms | 9.50 ms | 30 | 2026-09-14 |
| Switch view mode after an edit, 8 MiB | 1.38 ms | 1.33 ms | 30 | 2026-09-14 |
| Full parse, 8 MiB manual | 214.17 ms | 212.60 ms | 30 | 2026-09-14 |
| Full parse, 16 MiB adversarial | 219.55 ms | 219.03 ms | 10 | 2026-09-14 |
| Cold launch to an empty window | — | ≈135 ms | 30 | 2026-09-13 |
First paint is three to five milliseconds from one kilobyte to sixteen megabytes, the same work at every size. Typing on a megabyte of prose commits a glyph in a median of 2.77 ms, a fortieth of the budget. The cold-launch worst sample varies with host load and is quoted as a median.
Memory
Settled memory of the whole process. The controls are a matched native text view measured the same way.
| Document | Mardo settled | Native control | Date |
|---|---|---|---|
| Empty window | 23.6 MiB | 21.5 MiB | 2026-09-14 |
| Tiny README | 39.6 MiB | 36.1 MiB | 2026-09-14 |
| 1 MiB prose | ≈39 MiB | 36.1 MiB | 2026-09-14 |
| 8 MiB manual | ≈43 MiB | 36.1 MiB | 2026-09-14 |
| 4 GiB log | 42.8 MiB | 40.7 MiB | 2026-09-14 |
| 50 GiB corpus | 44.6 MiB | 42.8 MiB | 2026-09-11 |
An eight-megabyte manual settles around 43 MiB; a four-gigabyte log settles 2.1 MiB above a native text view; a fifty-gigabyte file settles at 44.6 MiB, 1.8 MiB above a control that is sixteen hundred times smaller. Memory tracks what you are viewing, not the size of the file.
Large files
"Publish" is the time to put the bytes under the viewport on screen; the exact render follows immediately after.
| Measure | 4 GiB (2026-09-14) | 50 GiB (2026-09-11) |
|---|---|---|
| Open to an editable, painted canvas | 206 ms first paint | 124 ms |
| Jump anywhere, time to on-screen | 1.7 to 9.9 ms | 2.2 to 12.7 ms |
| Whole-file literal search | 1.7 s, worst frame 16.9 ms | 38 s, worst frame 23 ms |
| Settled memory | 42.8 MiB | 44.6 MiB |
Drop the scrollbar at byte four billion and the text is on screen in under ten milliseconds, because opening and jumping never do work that grows with the file.
Correctness and proof
Each row is one of Floof Logic's release gates; the count is the last green run's, dated.
| Proof | Result | Date |
|---|---|---|
| Editing matches the Mac's own text system | 54,065 motion, selection, and typing cases, 0 divergences, 0 exceptions | 2026-09-14 |
| CommonMark and GitHub Flavored Markdown | verified against all 652 CommonMark 0.31.2 examples; 66 classified into named families, 0 unclassified | 2026-09-14 |
| Clipboard | one semantic document proved against the system reader | 2026-09-14 |
| An agent's save cannot lose unsaved work | 24 scenarios, 159 checks | 2026-09-14 |
| Timewarp writes nothing | 13 scenarios, 182 checks | 2026-09-14 |
| PDF pagination | 36 fixtures, 2,325 pages, 10.9 MB | 2026-09-14 |
| Hostile input | 516 deterministic arbitrary-byte probes | 2026-09-14 |
| Whole app | 321 automated tests; 1,049 interface checks | 2026-09-14 |
| Search throughput | 11,381 MiB/s case-sensitive, 1,994 MiB/s folded, 4 GiB corpus | 2026-09-02 |
| Finder Quick Look | ready in 57.5 ms, any file size | 2026-09-05 |
Floof Logic keeps 219 dated evidence records, each with the exact result behind a claim.
Head to head on the numbers both sides publish
Downright is the only competitor that publishes performance figures, so it is
the only fair numeric comparison. Its figures are from its own benchmark on a
5,000-line, 120 KB file, read from PERFORMANCE.md on 2026-09-11. Mardo's are
the gate rows above.
| Measure | Downright (published) | Mardo (dated gate) |
|---|---|---|
| Keystroke | < 8 ms p95 on 120 KB | 2.77 ms median, 7.08 ms worst on 1 MiB (10,000 samples) |
| End-to-end parse | 12.8 ms + 29.5 ms for 120 KB (≈ 4 MB/s) | 8 MiB in 214 ms (≈ 39 MB/s) |
| Mode switch | whole-document rebuild | 1.38 ms on 8 MiB |
| Whole-document layout | stops above a 5 MB threshold | none at any size |
| Memory | < 150 MB target for a 1 MB document (manual gate) | ≈ 39 MiB on 1 MiB, ≈ 43 MiB on 8 MiB |
| Quick Look | < 400 ms target, 2 MB cap (no automated measurement) | 57.5 ms, any size |
| Cold launch | < 250 ms for 100 KB (manual gate) | ≈ 135 ms median to an empty window |
On every row both projects measure, Mardo's number is smaller, its input is larger, and its gate runs against a hard maximum rather than a manual target. Downright earns the comparison by publishing at all; the rest of the field publishes no numbers to compare.