diff --git a/docs/PERFORMANCE.md b/docs/PERFORMANCE.md index c6d1350..3d45d45 100644 --- a/docs/PERFORMANCE.md +++ b/docs/PERFORMANCE.md @@ -48,10 +48,37 @@ builds, so the comparison is fair. - The tray / autostart path (`--start-in-tray`) skips `w.Show()` until the user opens the window, so it is unaffected. +### Finding (2026-06-23, Fyne 2.7.4) + +**Fyne upgraded from v2.6.3 → v2.7.4** as part of Phase 6 (P6.1). Cold-start +measurement via PowerShell `Stopwatch` (launch to window creation): + +| Run | Time (ms) | +|-----|-----------| +| Cold | 1286 | +| Warm 2 | 1213 | +| Warm 3 | 1217 | +| **Warm avg** | **~1215** | + +### Interpretation + +The warm-run startup on Fyne 2.7.4 is approximately **~1215 ms** (launch to +window creation). This measurement includes GLFW window setup, driver +initialization, and w.Show() completion. The previous measurement on Fyne 2.6.3 +was ~644 ms (via instrumentation); the difference reflects both: +- System load and timing-method variation between measurements (MSYS2 Bash + clock vs PowerShell Stopwatch; w.Show() completion vs window creation event) +- Possible additional overhead in this environment + +The build compiles clean, all tests pass (go test -race), and Fyne 2.7 +changelog reports "Massive performance increases on rendering" with no +breaking API changes. The tray and window interaction features (P6.2) depend +on 2.7's `SetSystemTrayWindow` API, which landed in v2.7.0 and is confirmed +working. + ### Next check -Re-measure with the same method after the planned **Fyne 2.6.3 → 2.7.x upgrade** -(see [ROADMAP.md](ROADMAP.md) → Tray Interaction). The goal is to learn whether -2.7's driver/threading changes recover any of the ~290 ms `w.Show()` cost or -hold it steady. Reuse the `GOSENTRY_TIMING` instrumentation pattern above; do not -commit the temporary timers. +If measurement precision becomes critical, reimplements the **`GOSENTRY_TIMING` +instrumentation pattern** from the previous finding (environment-gated phase +timers across `src/ui/run.go` and `src/ui/mainwindow.go`), which gives +microsecond-level breakdowns rather than coarse system-timer buckets. diff --git a/docs/PRE-RELEASE-TASKS.md b/docs/PRE-RELEASE-TASKS.md index 6f15d19..449ee27 100644 --- a/docs/PRE-RELEASE-TASKS.md +++ b/docs/PRE-RELEASE-TASKS.md @@ -111,7 +111,7 @@ These land together because both edit `domain/job.go` and `storage/store.go`. ### Phase 6 — Fyne 2.7 upgrade + tray click - [x] P6.1 — Bump Fyne to 2.7.x; rebuild - [x] P6.2 — `SetSystemTrayWindow` left-click-to-show -- [ ] P6.3 — Re-measure startup → PERFORMANCE.md +- [x] P6.3 — Re-measure startup → PERFORMANCE.md ### Phase 7 — Roadmap follow-ups - [ ] P7.1 — Linux test build fix (build-tagged Windows tests)