Benchmarks
How it stays fast
- Lazy indexing: The initial scan is batched and non-blocking. The server indexes files in chunks so the editor UI stays responsive while the workspace loads.
- Syntax tree eviction: Syntax trees for closed files are released from memory. Only open files and their dependencies are retained, which keeps the heap bounded even in large workspaces.
Running your own benchmark
You can benchmark the server against your own addon. Run the following from the server source directory:- Total index time and memory usage
- Per-feature latency (completion, diagnostics, hover)
- All diagnostics grouped by rule
Known limits
- Shallow type inference: Type inference is designed to answer “what follows a dot” quickly. It stays quiet in situations where deep inference would be expensive, so you may need explicit
---@typeor---@paramannotations for complex generics or heavily metatable-driven code. - Whole-file reanalysis: When a file changes, the server re-analyses the entire file. At 31 ms for a 3,200-line file and with a 250 ms debounce, incremental reparsing is not currently worth the added complexity.
- Wiki as source of truth: The dataset is built from the Garry’s Mod wiki. If the wiki is missing an entry or lists incorrect signatures, the server will reflect that gap.