Skip to content

[1143] 窗口构造三项延后优化,tm_widget ctor 185ms → 110ms#4027

Merged
da-liii merged 2 commits into
mainfrom
da/1143/mupdf_init_gap_log
Jul 19, 2026
Merged

[1143] 窗口构造三项延后优化,tm_widget ctor 185ms → 110ms#4027
da-liii merged 2 commits into
mainfrom
da/1143/mupdf_init_gap_log

Conversation

@da-liii

@da-liii da-liii commented Jul 19, 2026

Copy link
Copy Markdown
Contributor

Summary

  • checkNetworkAvailable()QTimer::singleShot(0),移出构造期 QNetworkAccessManager 首次创建的 ~37ms
  • QWK::LoginDialog 惰性创建:新增 ensureLoginDialog(),首次显示时才 new + setupLoginDialog,移出构造期 ~90-113ms
  • 已登录时 refreshMembershipInfoInBackground()singleShot(0),ctor 尾部 43ms → 0ms
  • 排查用的临时 debug-std 分段插桩已在合并前移除,实测数据记录在 devel/1143.md 3.5

关键结论:ensure_window 内大块成本是 Qt 子系统一次性暖场(字体/样式/网络栈),只在构造内部删项会让成本迁移到下一个重控件(status bar 段 0→53ms);把工作挪到事件循环起跑后才真正出关键路径——延后后网络栈首次初始化在事件循环里仅 1ms。

实测(同机三次运行):tm_widget ctor 合计 185ms → 110ms,ensure_window ~204ms → ~166ms。

Test plan

  • xmake b stem 构建通过
  • 本地启动二进制验证:ctor 各段日志确认延后生效(deferred 日志与前后同毫秒),defer 任务在 ensure_window done 之后的事件循环里执行
  • 启动后点击登录按钮,确认登录对话框正常弹出(惰性创建路径)
  • 已登录状态下启动,确认会员信息/通知栏正常刷新(membership 延后路径)

🤖 Generated with Claude Code

da-liii and others added 2 commits July 20, 2026 00:53
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- checkNetworkAvailable 改 singleShot(0),省构造期创建
  QNetworkAccessManager 的 ~37ms
- QWK::LoginDialog 惰性创建(ensureLoginDialog 首次显示时才
  new + setupLoginDialog),移出构造期 ~90-113ms
- 已登录时 refreshMembershipInfoInBackground 改 singleShot(0),
  ctor 尾部 43ms → 0ms

关键结论:ensure_window 内大块成本是 Qt 子系统一次性暖场,
只在构造内部删项会让成本迁移到下一个重控件;把工作挪到事件
循环起跑后(singleShot(0))才真正出关键路径。实测见 devel/1143.md 3.5。

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@da-liii
da-liii merged commit 024a948 into main Jul 19, 2026
4 of 6 checks passed
@da-liii
da-liii deleted the da/1143/mupdf_init_gap_log branch July 19, 2026 16:57
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.

1 participant