Skip to content

[1145] 工具栏重复重建性能优化:诊断插桩 + focus icons 缓存修复#4024

Draft
da-liii wants to merge 4 commits into
mainfrom
da/1145/update_menu
Draft

[1145] 工具栏重复重建性能优化:诊断插桩 + focus icons 缓存修复#4024
da-liii wants to merge 4 commits into
mainfrom
da/1145/update_menu

Conversation

@da-liii

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

Copy link
Copy Markdown
Contributor

Summary

  • 新增菜单更新链路性能诊断插桩([1145] 前缀日志)与 GUI 测试 TeXmacs/tests/1145.scmMOGAN_TEST_GUI=1 xmake r 1145),实测定位瓶颈为每次 update_menus 的 10 次 scheme menu-expand(~75-110ms)
  • 修复 focus icons 缓存永远 MISS:get_menu_widget 缓存判等改用归一化 key(新增 scheme 函数 menu-cache-normalize,剔除 invisible 项载荷),重复进入数学模式时 which=2 从每次 MISS + make_menu_widget ~47ms 变为 CACHE_HIT 零重建

Test plan

  • xmake b stem
  • MOGAN_TEST_GUI=1 xmake r 1145(GUI 诊断日志观察)
  • xmake r 1145(headless:menu-expand 判等诊断)

🤖 Generated with Claude Code

da-liii and others added 4 commits July 19, 2026 16:46
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
get_menu_widget 记录 EQUAL/CACHE_HIT/MISS 计数并对 menu-expand、
make_menu_widget 计时;replaceButtons 记录 SAME/REPLACE 计数与耗时;
get_qactionlist 计时。TeXmacs/tests/1145.scm 在真实 GUI 中驱动
连续输入与进出数学模式,MOGAN_TEST_GUI=1 xmake r 1145 复现观测。

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
push-focus 给菜单项注入 (invisible (tree->path t)),路径随光标位置
变化,毒化 get_menu_widget 的展开结果判等,menu_cache 永远 MISS,
每次进入数学模式都全量 make_menu_widget(~41ms)并重建 QAction。

新增 scheme 函数 menu-cache-normalize 归一化展开结果中的 invisible
载荷;get_menu_widget 改用归一化 key 做判等与缓存索引。invisible
载荷本就不参与 widget 构建,行为零变化。实测重复进入数学模式
update_menus 从 166-173ms 降至 121-156ms。

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
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