mirror of
https://github.com/openswarm-ai/openswarm.git
synced 2026-08-20 03:35:40 +02:00
62 lines
2.1 KiB
Markdown
62 lines
2.1 KiB
Markdown
# Boot + size instrumentation (Phase 0 baseline)
|
|
|
|
Tooling to measure two things we used to guess at: how long a cold launch takes,
|
|
and how many files we make the OS (and Defender) scan. These numbers are the
|
|
baseline that Phase 6 (slimming) and Phase 7 (Squirrel vs NSIS) are judged against.
|
|
|
|
## Boot timing
|
|
|
|
`electron/main.js` emits four ordered milestones to `backend.log`, one line each:
|
|
|
|
```
|
|
[perf] app-launch t=<ms>
|
|
[perf] first-paint t=<ms>
|
|
[perf] backend-http-ready t=<ms>
|
|
[perf] first-agent-response t=<ms>
|
|
```
|
|
|
|
`t` is milliseconds since process start. `first-agent-response` is fired by the
|
|
renderer (`WebSocketManager.dispatchDelta`) on the first streamed agent token.
|
|
|
|
Read and assert them after launching a packaged build:
|
|
|
|
```
|
|
node scripts/perf/parse-timing.js # human table, exits 1 if missing/unordered
|
|
node scripts/perf/parse-timing.js --json # machine-readable
|
|
node scripts/perf/parse-timing.js --log <path-to-backend.log>
|
|
```
|
|
|
|
backend.log lives next to `auth.token`:
|
|
- macOS: `~/Library/Application Support/OpenSwarm/data/backend.log`
|
|
- Windows: `%APPDATA%\OpenSwarm\data\backend.log`
|
|
- Linux: `~/.local/share/OpenSwarm/data/backend.log`
|
|
|
|
## File count / size
|
|
|
|
```
|
|
node scripts/perf/file-count.js # auto-detects packaged tree
|
|
node scripts/perf/file-count.js --root <resources-dir> # explicit
|
|
node scripts/perf/file-count.js --json
|
|
```
|
|
|
|
### Recorded baseline (Windows, win-unpacked/resources)
|
|
|
|
| dir | files | size |
|
|
|-------------|--------|---------|
|
|
| python-env | 8421 | 373.6 MB |
|
|
| router | 2651 | 35.9 MB |
|
|
| backend | 86 | 8.2 MB |
|
|
| frontend | 11 | 232.3 MB |
|
|
| debugger | 75 | 1.2 MB |
|
|
| other | 3 | 621.3 MB |
|
|
| **TOTAL** | 11247 | 1.2 GB |
|
|
|
|
`python-env` is by far the largest file count, so it dominates Defender's
|
|
per-file scan cost on first launch. That is the Phase 6a target.
|
|
|
|
## Tests
|
|
|
|
`node scripts/perf/test-perf.js` builds throwaway fixtures with known counts and
|
|
known timing logs, runs both tools against them, and asserts exact numbers plus
|
|
that the failure paths fail. Hermetic; needs no packaged build. 17 assertions.
|