// empirical performance & methodology
Performance Benchmarks
px0 is engineered for extreme responsiveness, instant code navigation, and low host resource utilization. Every benchmark here is empirical, reproducible via shell scripts, and evaluated across seven real-world repositories from Flask to the Linux Kernel.
Individual processes spawned by default on a standard workspace:
Single static native binary managing all subsystems in memory:
- One Process ModelRouter, file indexer, parallel search pool, Chroma highlighter, and Git forge in one binary.
- No Electron or Node RuntimeZero bundled Chromium instances, zero Node.js processes, zero CGO dependencies.
- Active Memory ScavengingUnused heap pages returned to host OS via debug.FreeOSMemory() after 15 seconds of idle.
- Lazy LSP SpawningLanguage servers spawn strictly on demand and terminate on process exit.
We encourage developers and teams to verify all claims on their own hardware. The repository provides an automated benchmark harness:
git clone https://github.com/px0-ai/px0.git && cd px0
./benchmark.sh --clonePerforms shallow clones of all 7 test repositories into bench-repos/../benchmark.shRuns 5 iterations per repository and emits a Markdown table with index, search, and memory statistics../benchmark.sh --memory bench-repos/linuxProfiles RSS through index, 5 full-tree scans, opening large files, and idle scavenger reclamation../benchmark.sh --lsp .Benchmarks cold spawn latency, definition lookup, outline extraction, and symbol references with gopls.- Operating System
- Linux 6.x (Ubuntu 24.04 LTS / Debian 12 x86_64)
- Processor
- AMD Ryzen 7 / Intel Core i7 (8 physical cores, 16 threads)
- Memory
- 32 GB DDR5 RAM
- Storage
- 1 TB NVMe PCIe 4.0 SSD (direct local filesystem mount)
- Test Corpus
- 7 public open-source git repositories cloned at --depth 1
- Run Protocol
- Fastest of 5 consecutive runs (eliminates cold disk cache variance)
- LSP Baseline
- Language servers disabled (-no-lsp) for pure reader baseline
- Scavenger Timing
- debug.FreeOSMemory() invoked after 15 seconds of idle time
Why is the Linux kernel indexed faster than the TypeScript repository?
The TypeScript repository contains tens of thousands of deeply nested, generated AST test fixtures and large JSON snapshots. The Linux kernel consists almost entirely of flat, clean C source files and headers. px0 parallel directory walker traverses and ignores non-code files concurrently, achieving ~370 ms across the 95,710 Linux files.
How does px0 maintain ~20-30 MB host RAM without leaking memory?
px0 uses windowed lexical chunking (1,000-line blocks) and an active idle memory scavenger. 15 seconds after an indexing or search pass completes, px0 calls debug.FreeOSMemory(), explicitly returning unused heap pages directly back to the operating system kernel.
Does px0 include language server overhead in its memory benchmarks?
No. Just like in production, language servers (e.g. gopls, clangd) spawn lazily as separate OS processes only when an outline or definition is requested. Without an LSP installed, px0 provides instant regex-based outline fallback with zero extra RAM.
What is the real cost of the browser tab in local vs remote mode?
On local developer machines, the browser tab consumes ~80-150 MB for the DOM, V8 runtime, and GPU compositing. Total local footprint is ~100-180 MB (still 85-90% lower than Electron IDEs). When running remotely (px0 -host 0.0.0.0 on a devbox or container), the remote host pays strictly the ~20-30 MB Go daemon cost while UI rendering runs locally on your laptop.