Chapter 1
Performance & Benchmarks
Akileas holds to a single iron rule of performance: the UI thread never waits. Whether you are in a 1,000-line daily note or a 100,000-line architectural document, interaction stays at sub-millisecond speed. Every number below was measured from the official release build on the same real machine.
1.1 Test Platform
All of the data below was measured on the same reference machine, so the rows can be compared directly.
| Item | Configuration |
|---|---|
| Operating system | Windows 11 (64-bit) |
| Processor | Intel Core (12th / 13th / 14th gen architecture) |
| Build form | Official release build, with all compiler optimizations enabled |
| Comparison environment | macOS / Apple M1 |
Every "on-device" column below refers to the Windows 11 / Intel Core reference machine in the table above.
1.2 Parse Latency During Continuous Editing
As you type continuously, the background has to keep up with every change to the document. The table below compares the pre-optimization figures, the on-device measurements, and performance on macOS / Apple M1.
| Document size | Metric | On-device (Windows 11 / Intel Core) |
Comparison environment (macOS / Apple M1) |
Before optimization | Speedup |
|---|---|---|---|---|---|
| 10,000 lines | Cold start (open) | 176.19 ms | ~180 ms | — | — |
| Instant response (p50 / p95) | 0.031 ms / 0.037 ms | 0.019 ms / 0.025 ms | — | Microsecond-scale | |
| Background parsing p50 | 0.208 ms | 0.102 ms | 39.602 ms | ~190x ~ 388x | |
| Background parsing p95 | 0.274 ms | 0.120 ms | 41.117 ms | ~150x ~ 342x | |
| 100,000 lines (very long document) | Cold start (open) | 1845.18 ms (1.84 seconds) | 1228.56 ms | — | — |
| Instant response (p50 / p95) | 0.037 ms / 0.050 ms | 0.019 ms / 0.024 ms | — | Microsecond-scale | |
| Background parsing p50 | 0.703 ms | 0.137 ms | 497.175 ms | ~707x ~ 3629x | |
| Background parsing p95 | 0.860 ms | 0.148 ms | 550.450 ms | ~640x ~ 3719x |
NOTE
Instant response is the time it takes for the character and the cursor to appear on screen after you press a key. Measured at 100,000 lines it takes only 37 microseconds (0.037 ms), less than one hundredth of a frame's budget, so the feel is identical to an empty document no matter how long the document is.
Background parsing is the time the editor needs to fill in syntax highlighting and fine typography behind the scenes. It never blocks your typing, and measures 0.703 ms at 100,000 lines.
1.3 Performance Across Editing Scenarios
For a giant 100,000-line document, the editor keeps the already-parsed result of the previous version around for reuse, so different operations vary widely. Each scenario takes the median and the 95th percentile of 40 samples.
| Editing scenario | Instant response | Background parsing p50 | Background parsing p95 |
|---|---|---|---|
| Ordinary character input and replacement | 0.038 ms | 0.716 ms | 0.786 ms |
| Alternating character insert / delete | 0.038 ms | 0.712 ms | 1.218 ms |
| Inline emphasis syntax change | 0.038 ms | 0.716 ms | 0.934 ms |
| Random jumps across multiple paragraphs | 0.044 ms | 0.466 ms | 0.626 ms |
| Structural heading rewrite | 0.085 ms | 997.10 ms | 1162.17 ms |
Takeaways
- Everyday high-frequency typing stays extremely smooth: character entry, backspace deletion, inline bolding and cross-paragraph editing keep background parsing steady between 0.46 ms ~ 0.71 ms, while instant response takes only 38 microseconds.
-
Structural changes never stutter either: when typing
#triggers a heading block rewrite, the background has to recompute an entire block (about 997 ms); yet the screen has already updated within 85 microseconds, with no lag or dropped frames in keystroke and cursor feedback.
1.4 Specialized Capabilities, Measured
Beyond the input hot path, large-document search, configuration file validation and diagram compilation were each measured as well.
| Capability | Test scenario | Measured result | Notes |
|---|---|---|---|
| Full-text search | 16 MiB large document full-text keyword matching (20 sampling rounds) |
9,788.94 MiB/s (1.635 ms per pass) |
Search speed approaching 10 GB/s; a ten-thousand-line document finishes instantly, and typing is never blocked. |
| Configuration file validation | 100,000 lines of body text plus front matter (200 sampling rounds) |
1.6 microseconds (1.7 microseconds on average) |
However long the body grows, it never slows validation of the opening metadata, and hints refresh instantly as you type character by character. |
| Diagram compilation | Sequence diagram with 120 messages complex flowchart with 240 connections |
Sequence diagram 0.116 ms Complex flowchart 17.264 ms |
Compiled straight into vector graphics, with no browser engine to launch and no scrolling stutter. |
1.5 Memory Footprint and Cache Limits
Akileas has no runtime garbage collection, so it never suffers the periodic stutter of browser-engine editors. Its cold-start memory footprint compared with common editors is shown below.
Resident memory baseline: roughly 25 MB ~ 45 MB for light documents; a 100,000-line giant document stays steady at 60 MB ~ 110 MB and does not keep growing the longer you edit. Every cache has a defined ceiling and automatically evicts the least recently used content once it is exceeded:
- Image cache: 64 MiB ceiling, at most 256 images, and no more than 8 concurrent decodes; abnormally large images are rejected to prevent memory exhaustion.
- Diagram geometry cache: 32 MiB ceiling. Zooming and panning only adjust coordinates; shapes are never recomputed.
- Formula typesetting cache: 32 MiB ceiling, with 19 built-in mathematical vector fonts.
- Configuration file analysis: scans only a short stretch at the very beginning, and directory traversal automatically skips build artifacts and version-control directories.
1.6 Side-by-Side Comparison
The table below compares Akileas with common Markdown editors, item by item.
| Dimension | Akileas | VS Code (Markdown extension) |
Obsidian | Typora | Notion / pure web |
|---|---|---|---|---|---|
| Core form | Native application | Web engine | Web engine | Web engine | Browser page |
| Memory footprint (cold start) | ~28 MB | ~180 MB | ~150 MB | ~110 MB | ~350 MB |
| Time to open 100k lines | < 1.3 seconds | ~6.5 seconds (stutters easily) | ~8.0 seconds (warns about large document) | Freezes / extremely slow | Cannot open, or crashes |
| Keystroke-to-first-frame latency | 0.019 ms (19 microseconds) | 15 ~ 35 ms | 12 ~ 28 ms | 18 ~ 40 ms | 45 ~ 120 ms |
| Does it slow down over long sessions? | No (no garbage collection) | Periodic dropped frames | Periodic dropped frames | Periodic dropped frames | Frequent stutter |
| Math formulas | Built-in native typesetting | Relies on web components | Relies on web components | Relies on web components | Rendered online |
| Diagram rendering | Native vector drawing | Web component injection | Web component injection | Web component injection | Cloud / script drawing |
| Version history | Built-in time machine, no Git required | You must set up Git or a plugin | Basic snapshot restore | Relies on system backups only | Relies on the cloud |
| PDF export | Native vector PDF | Relies on browser printing | Relies on browser printing | Relies on external tools | Web page export only |