# Benchmarks

These are reproducible repository-level measurements, not synthetic claims
about a general-purpose runtime. They were collected on 2026-08-24 in the
working tree with MoonBit `0.1.20260819` / moonc `0.10.9` on Windows.

## Scale

| Measurement | Result |
| --- | ---: |
| `.mbt` lines including the catalog fixture (`rg -n "^" -g '*.mbt'`) | 20,833 |
| Core library, tests, and CLI lines excluding catalog fixture | 1,785 |
| Catalog fixture tokens | 4,000 |
| Catalog kinds | 5 × 800 |
| Catalog validation problems | 0 |
| Test cases, default target | 25 passed |
| Test cases, all stable targets (`wasm`, `wasm-gc`, `js`, `native`) | 25 passed each |
| Coverage (`moon test --enable-coverage`) | 4,450 / 4,611 lines |

## Wall-clock commands

Each command was run once after the project was warm. Timings are local
observations and will vary with OS, CPU, and cache state. If source files have
changed, run `moon clean` before collecting coverage so instrumented artifacts
match the current source layout.

| Command | Elapsed |
| --- | ---: |
| `moon check --deny-warn` | 574.9 ms |
| `moon test --deny-warn` | 1,169.2 ms |
| `moon test --target native --deny-warn` | 628.1 ms |
| `moon run cmd/main` | 1,044.4 ms |

Reproduce the timing table from the repository root with PowerShell:

```powershell
$check = Measure-Command { moon check --deny-warn | Out-Null }
$test = Measure-Command { moon test --deny-warn | Out-Null }
$native = Measure-Command { moon test --target native --deny-warn | Out-Null }
$cli = Measure-Command { moon run cmd/main | Out-Null }
```
