Skip to content

优化 WeaselTSF:跳过重复的候选窗位置更新#1885

Open
dragonknightk wants to merge 1 commit into
rime:masterfrom
dragonknightk:perf/candidate-position-dedupe
Open

优化 WeaselTSF:跳过重复的候选窗位置更新#1885
dragonknightk wants to merge 1 commit into
rime:masterfrom
dragonknightk:perf/candidate-position-dedupe

Conversation

@dragonknightk

@dragonknightk dragonknightk commented Jun 29, 2026

Copy link
Copy Markdown

摘要

  • WeaselTSF 侧缓存上一次候选窗/组字位置。
  • WeaselIPC 侧缓存上一次压缩后的输入位置消息。
  • 当有效位置没有变化时,跳过重复的位置更新。
  • 在焦点、会话和组字生命周期边界重置缓存。

背景

快速输入时,候选窗位置更新链路会出现大量“实际位置未变化”的重复调用。本地测试样本中:

  • 桌面应用输入框:重复候选位置更新约 85%
  • 微信输入框:重复候选位置更新约 82%

这些重复更新会继续进入 IPC 和候选窗更新链路,即使候选窗实际位置没有变化。本 PR 只在 TSF/IPC 边界过滤等价的位置更新,用来减少无意义的消息和窗口更新压力。

改动边界

  • 不改变候选内容、候选排序、分页和选择逻辑。
  • 不改变候选窗布局计算。
  • 不改变候选窗显示/隐藏策略。
  • 位置缓存会在焦点、会话和组字边界清空,避免跨上下文复用旧位置。

与已有 PR 的关系

#1869 都属于候选窗性能方向,但处理层级不同:#1869 更靠近 UI 层,本 PR 在 TSF/IPC 边界减少重复位置消息。

测试

  • 已对修改文件运行 clang-format --style=file --Werror --dry-run
  • 已本地运行 xmake f -a x64 -m release && xmake
  • 已验证 WeaselTSFWeaselIPC 相关代码路径可编译。

@dragonknightk dragonknightk marked this pull request as ready for review June 29, 2026 06:39
@dragonknightk dragonknightk changed the title perf(WeaselTSF): skip redundant candidate position updates 优化 WeaselTSF:跳过重复的候选窗位置更新 Jun 29, 2026
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