Skip to content

perf:提升启动速度并收敛历史页与延迟加载链路#203

Merged
lzy98276 merged 9 commits intoSECTL:masterfrom
MF-Dust:master
Mar 13, 2026
Merged

perf:提升启动速度并收敛历史页与延迟加载链路#203
lzy98276 merged 9 commits intoSECTL:masterfrom
MF-Dust:master

Conversation

@MF-Dust
Copy link
Contributor

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

概述

本次改动主要围绕启动速度、页面延迟加载和历史记录相关性能进行优化,同时修复了延迟加载过程中引入的几个界面回归问题。

在不改变现有 JSON 数据存储方式、目录结构、字段结构和外部页面协议的前提下,减少了重复计算、重复读写和不必要的启动阶段调度,提升了冷启动和首次进入页面时的响应速度。

主要改动

1. 点名历史保存链路优化

  • 优化点名抽取完成后的历史保存流程。
  • 优先复用已选结果中已有的权重信息,避免保存时再次全量计算权重。
  • 将按学生逐个扫描权重列表的方式改为映射查找,减少保存阶段的额外开销。
  • 保持历史 JSON 结构和读取方式不变。

2. 点名历史页刷新链路优化

  • 优化点名历史页的后台刷新逻辑。
  • 同一次刷新过程中复用学生名单和历史数据快照,减少重复读文件和重复过滤。
  • 模式 0 下复用已有历史快照参与权重计算,避免重复加载历史和重复计算。
  • 清理当前主流程不再使用的旧同步加载逻辑。

3. 抽奖历史页刷新链路优化

  • 收敛抽奖历史页到当前后台 payload 刷新模式。
  • 删除不再使用的旧同步加载方法和相关残留状态。
  • 保留现有分页、排序和展示逻辑,不改变历史记录展示协议。

4. 主窗口按需建页优化

  • 主窗口改为启动时仅创建导航壳和必要页面,不再一次性实例化全部主页面。
  • 抽奖、人脸抽取、历史记录等页面改为首次访问时再创建。
  • 保持导航顺序、页面名称、快捷键、托盘和 URL/IPC 行为兼容。

5. 页面模板延迟加载优化

  • 优化通用页面模板的首次建页路径。
  • 为页面模块/类解析增加缓存,减少重复导入和重复解析开销。
  • 收敛部分仅用于同线程延后的定时调度,缩短首次切页和首次建页路径。
  • 设置窗口恢复页面工厂时复用统一定义,减少创建路径分叉。

6. 启动初始化链路优化

  • 收敛 AppInitializer 中字体、主题、主题色、重启记录清理和主窗口创建的调度入口。
  • 减少启动阶段和首窗显示后的多层 QTimer.singleShot(...) 串联。
  • 将课前重置初始化、自动备份检查、更新检查、摄像头预热等非关键任务明确放到首窗显示之后执行。
  • 保持主窗口、设置窗口、托盘、UIAccess 重启等既有行为兼容。

7. 回归修复

  • 修复主窗口侧边栏直接点击抽奖、人脸抽取、历史记录时页面空白的问题。
  • 修复打开设置窗口时主窗口错误置前的问题。
  • 修复设置窗口“基础设置”页顶部残留“正在加载页面...”的问题。
  • 补充 ruff format 触发的格式化修复,确保 CI 的 pre-commit --all-files 通过。

验证情况

  • 已对本次修改文件运行 pre-commit
  • 已运行 pre-commit --all-files 并通过。
  • 已运行相关 Python 文件的 compileall 校验。
  • 已完成针对主窗口按需建页、设置窗口显示层级、基础设置默认页、历史页刷新路径的本地回归验证。

兼容性说明

  • 未修改现有数据存储方式。
  • 未修改历史记录 JSON schema、目录结构和读写入口。
  • 未修改页面名称、导航协议、URL/IPC 控制语义和现有 UI 交互行为。

@lzy98276 lzy98276 merged commit d7e3439 into SECTL:master Mar 13, 2026
7 checks passed
lzy98276 added a commit that referenced this pull request Mar 15, 2026
This reverts commit d7e3439, reversing
changes made to 613a003.
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