Skip to content

perf:收敛冷启动、按需加载与设置页面路由链路#204

Merged
lzy98276 merged 25 commits intoSECTL:masterfrom
MF-Dust:master
Mar 15, 2026
Merged

perf:收敛冷启动、按需加载与设置页面路由链路#204
lzy98276 merged 25 commits intoSECTL:masterfrom
MF-Dust:master

Conversation

@MF-Dust
Copy link
Contributor

@MF-Dust MF-Dust commented Mar 14, 2026

概述

这一组提交围绕程序当前最明显的性能热点,连续收敛了冷启动、按需加载、设置窗口页面管理、URL/IPC 路由以及页面模板初始化几条主链路。

在这之前,程序在启动阶段会提前导入一批并非首屏必需的模块,例如统计、更新检查、主窗口部分重组件、安全验证链路、人脸抽取相关资源等;同时,设置窗口和主窗口内部还存在多套并行维护的页面映射、页面物化入口和验证判定逻辑,导致同一类行为在不同入口下重复实现、重复判断。除此之外,设置窗口搜索跳页依赖轮询等待页面创建,页面模板层也保留了多层 QTimer.singleShot(...) 异步链路,这些问题虽然单点开销不一定都很大,但叠加后会明显拉长首次显示、首次切页和首次进入设置页时的响应时间。

本次改动的核心目标有三点:

  1. 尽量把非首屏必需的模块和资源从冷启动路径上移开,改为真正访问相关功能时再加载。
  2. 把设置窗口、主窗口、URL/IPC 和安全验证链路中重复维护的注册表、路由规则和延迟加载逻辑收敛成单一来源,降低重复计算和后续维护成本。
  3. 去掉设置窗口搜索跳页、几何同步、页面模板初始化中不必要的轮询和异步调度,让页面创建与跳转路径更短、更稳定。

因此,这个 PR 不只是“做了几处小的性能补丁”,而是把几条影响启动体感和页面首次交互体验的公共基础链路重新整理了一遍。在不改变现有 JSON 存储方式、不调整页面协议和主要 UI 行为的前提下,尽量减少了程序启动时和首次访问时的额外工作量,同时也为后续继续做性能优化打下了更干净的结构基础。

主要变更

启动与冷启动优化

  • 移除了启动阶段重复的设置初始化。
  • 将启动时的统计、更新检查、主窗口重模块和主页面默认组件改为延迟导入。
  • 收敛了更新线程清理路径,避免为了退出清理而在启动时提前带入更新模块。

安全与人脸抽取按需加载

  • 人脸抽取资源改为首次访问时再初始化,不再在冷启动阶段提前拉起。
  • 安全验证链路改为按需导入,安全设置页的重资源也延后到实际操作时再加载。
  • 新增统一的延迟验证代理,去掉多处重复 _require_and_run 包装。

主窗口与设置窗口结构收敛

  • 抽取并复用了主窗口点名/抽奖页面的通用主题包装逻辑。
  • 收敛了主窗口页面切换入口,减少多入口下重复的 ensure/show/switch 分支。
  • 引入共享页面注册表,统一设置页与主页面元数据来源。
  • 设置窗口的占位页创建、延迟物化、导航构建和 URL 路由改为复用同一套注册信息。

设置窗口交互性能优化

  • 去掉了设置搜索跳页中的轮询重试链,改为直接走页面物化统一入口。
  • 收敛了设置窗口顶部搜索框和侧边栏几何同步中的重复 QTimer 调度。
  • 清理了 PageTemplate / PivotPageTemplate 初始化阶段不必要的异步链路,减少页面首次创建时的额外等待。

URL/IPC 与安全策略统一

  • URL/IPC 页面打开逻辑去重,不再维护多套页面别名映射。
  • URL 命令的验证判定改为复用 verify_ops 的统一策略,避免 handler 侧再维护第二套规则。
  • 补充了设置页 URL alias 支持,修复部分路径无法直接打开的问题。

其他修复与构建改进

  • 修复设置页卸载时线程未清理干净的问题。
  • 修复 Nuitka 无效隐藏导入导致的打包失败。
  • 为 Nuitka 构建增加快速模式和并行 jobs,提升开发期验证速度。

预期收益

  • 缩短进程启动到首窗可见前后的热路径开销。
  • 降低未使用功能在启动时的资源占用。
  • 减少设置窗口搜索跳页、延迟建页和页面切换中的额外等待与重复逻辑。
  • 让页面注册、URL 路由和安全验证策略的维护点更集中,后续继续优化时更容易收敛。

验证情况

  • 相关步骤均已分别执行 pre-commitcompileall
  • 对设置窗口默认页、URL 路由、延迟建页、搜索跳页、模板页初始化等路径做了最小运行时烟测。
  • Nuitka 构建链路已完成问题排查,并验证快速模式与并行参数可用。

@MF-Dust MF-Dust changed the title perf:收敛冷启动导入路径并修复设置页线程销毁问题 perf:收敛冷启动、按需加载与设置页面路由链路 Mar 14, 2026
@lzy98276 lzy98276 merged commit dd81eb1 into SECTL:master Mar 15, 2026
7 checks passed
lzy98276 added a commit that referenced this pull request Mar 15, 2026
This reverts commit dd81eb1, reversing
changes made to d7e3439.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants