搜索文档

输入关键词查找当前使用指南和维护文档。

Skip to content
中州鹅 · 历史记录与验证证据文档目录

结论、提交、测试结果与安装包均对应文中记录时点。日常操作以现行维护手册为准。

万象:用户工具包的触摸与画面对照 ​

本次补充从 Android 触摸输入到画面变化的对照。历史 API 回放审计测量的是另一段路径,数据保留,不混用百分比。

固定比较对象 ​

对象源码提交构建
默认分支 fx-rime-only,含 Fcitxcecea4940bb5a5db67f91d6b20e00ee5c97877ea仓库原有准备脚本与普通 Fx Debug
中州鹅直连版cfd0ddc4d92dbcfcee815089ca34b97bdfa95780完整 :app Fx Debug
两版共同的 Rime prebuilt1126616c3ec569617da772e30d7a97f6b2694172x86_64

两个独立、固定提交的 checkout 只加入同一份 androidTest,构建前检查主程序与构建配置无改动。 工作仍在 feat/direct-rime-prototype,默认分支没有接收改动。 完整矩阵复用同批 APK,实际 APK 哈希、打包和加载的原生库随结果存档。 默认分支相比旧审计的 a714feff 多了输入记录、剪贴板和滑动方向修复,因此这是两版完整 产品路径的对照,差值不能全部算作某一个 Fcitx 路由函数的成本。

用户配置与模型 ​

官方万象 v18.1.3 base + LTS,全拼,简码开启,小字集,上下文调频开启。 用户提供的模糊音、页大小 6、fallback reorder、候选注释和提示设置保留。

输入文件SHA-256
v18.1.3 base ZIPfc6495ba8489a898737ca29883dedaf61ff3baf593c78900dc59102c919d0e63
LTS 模型1849e5e4acbdbfaf41fceeb86b739d5d0c85d574bd8a688562cba1e6beb78488
原始 wanxiang.custom.yaml42bf76351ceb6f2db87396ae13edf9d9914712a065a61cdf74c66c52900c1319
原始 user.yamldd82ae3dc637e850446eb6e4170d916bb3d628b08d85572096c6b4c62ccb9a57

两份原始 YAML 在 config 中逐字节保留,包括 CRLF。 原始 user.yaml 没有保存 context_reorder。校准发现临时打开的状态在输入会话重建后 可能还原,所以两版的测试副本只额外加入 var/option/context_reorder: true。 其余用户 YAML 内容不变;每轮还核对真实编辑会话的“上下文开/简码开/小字集”、 部署后的页大小和 fallback 设置,以及 LTS 文件确实已映射。

LTS 是可变发布标签,在准备期间于北京时间 2026-10-17 17:59:19 更新。 本次固定上面的 asset 650124920,组合夹具 SHA-256 为 1193ad6abe18732a677c45da9b7f9a075606b7b98172a48e8bfebb1b5ee9d742。 旧审计的模型固定值不改;以后复现需要保留对应模型,不能删除哈希检查来绕过更新。 实际开关列表随结果记录,未将旧配置字段额外重命名成新版开关。

对用户工具的使用与修正 ​

使用用户上传的《输入法性能对比报告与测试工具包.zip》,原 ZIP SHA-256 为 0f4b36b6c637369162e3f363628dde53475e933ed642b5b60bb37ceeacc66883。 核心 BenchTrace.java 原样执行; 四行键盘、三行候选、十六行编辑区压缩后逐帧差分,RGB 总差阈值固定为 60。

  • Windows、固定屏幕坐标及原笔记应用依赖换成 Linux 和独立中立编辑器,按真实键位校准。 编辑器没有引擎依赖。清空使用原 Editable 并等待选择更新,避免测试程序人为重建输入连接。
  • 原编码串不适用于全拼,改用固定 32 个全拼片段,含两个较长短句;每遍 264 键。
  • 两版统一关闭按键气泡与水波纹,避免气泡遮住候选区造成错误响应信号。 触摸 DOWN/UP 均走正常 Android 输入分发与实际键盘,两次同步注入之间等待 32ms。 这是最低等待量;实际 DOWN 到 UP 还包含分发等待,未单独记录 UP 时刻。
  • 原 final_latency.js 用候选结果寻找“最快”的时钟偏移,会抹掉真实平均延迟差。 本次不用该拟合:编辑器色块在输入前后各变色六次,以 Choreographer 帧时钟映射视频 PTS, 候选响应不参与对时。保留残差、前后漂移、实际帧时间和注入时刻。
  • 保留每键到下一次候选区域变化的原工具指标;另列下一键之前首次变化及覆盖率。 空格上屏单独统计,不把等待后续拼音的时间算作上屏延迟。

脚本与完整方法见 tools/screen-perf。

RGB 差阈值与“多少像素算作变化”是两个不同参数。当前压缩区域以候选 ≥5、编辑区 ≥2 个变化像素作为主分析门槛;原 final_latency.js 使用候选 >25、编辑区 >15。 归档保留逐帧像素计数,另用原门槛复算敏感性,不根据哪组数字更好看来选择主结果。

环境与统计边界 ​

在同一个 GitHub KVM Android 35 Google APIs x86_64 模拟器依次运行两版,使用相同主题、 布局、编辑器、方案和模型。运行前停止另一版,每轮恢复同一测试配置并删除专用档案的 学习数据库;相同三词预热后清空编辑器。没有导入个人长期词库或手动排序历史。

完整矩阵为每版计划 160ms 间隔三轮、120ms 一轮、固定种子 90–230ms 抖动一轮, 交替先后顺序,共 4,752 次触摸按键。另跑一遍和两遍语料的硬件参考,对每轮完整提交 文本逐字比较。同步注入在系统忙碌时会晚于计划,记录每键实际间隔及逾期量, 不能假定两版承受严格相同的瞬时输入速率。总时长不作为最大吞吐量结论。

延迟为设备触摸 DOWN 至录屏中的区域变化,包含输入分发、引擎、界面与采样,并记录 至少 32ms 的按住条件。它不是纯引擎耗时或真机触摸到光子的延迟。画面不变的键不等于丢键, 最近按键归因不等于引擎净成本。每轮分位数取中位数并列范围,不把相关按键当成独立实验。 CPU/PSS 包含相同 instrumentation 的成本;录屏和模拟器也限制外推,不能据此宣称电池收益。

结果 ​

正式运行:39041913893, 测试脚本提交 1667daab3780ed97c679a4bd81d9c31eefa8bcbe,全部通过。 14 轮包括 4 轮硬件参考、10 轮触摸,共 4,752 次触摸与 1,584 次硬件参考按键。 同样输入长度下,所有轮次的完整提交文本逐字一致;每遍输出 76 个汉字,两遍为 152 个。 这表示两版与参考输出一致,不是人工标注的汉字识别准确率。例如 zhongzhou 首选为“纵轴”, 最后一个长句首选为“我们以汽车是输入法”;测试没有改词或把共同的首选错误计为正确识别。

结论:本轮没有证明稳定的整链路提速或 CPU/PSS 收益。 常速候选 P50 几乎持平;候选 P95 略低,但下一键前响应 P50、上屏尾延迟和其他场景没有一致优势。 不能把下面的微小差值外推为真机收益,也不能把旧 API 回放的 6%/7% 套到触摸延迟。

常速三轮 ​

以下为各轮统计量的中位数;括号内为三轮范围。延迟单位 ms。

指标默认分支 Fcitx直连
每键到下一候选变化 P50119.7(119.0–125.5)119.0(116.2–121.6)
每键到下一候选变化 P95327.6(322.9–332.6)317.8(306.1–321.7)
下一键前的首次候选变化 P5083.5(81.0–85.9)86.8(84.4–91.5)
下一键前的首次候选变化 P95181.5(177.2–192.7)174.9(170.5–175.9)
空格到编辑区变化 P50114.9(108.5–117.2)116.7(108.6–121.1)
空格到编辑区变化 P95285.4(236.7–309.8)299.8(290.4–308.4)
每轮 528 键的进程 CPU,秒28.40(28.35–31.17)28.56(27.33–29.22)
输入循环结束 PSS,MiB316.76(316.01–317.57)316.44(316.16–317.98)

下一键前首次变化的覆盖率分别为 66.1%/67.8%(三轮中位数)。 未覆盖的键可能没有改变候选画面,或变化在下一键之后;不能据此推算丢键率。 常速空格画面检测分别为 192/192、191/192;所有提交文本仍完全一致。 进程 CPU 仅累计输入循环,PSS 在循环结束取样,均含测试组件;不代表整机能耗或应用峰值内存。

快速计划与抖动轮 ​

各场景每版只有一轮,下面的单轮值不构成稳定收益;数字为 P50 / P95,单位 ms。

场景版本每键到下一候选变化下一键前首次候选变化空格到编辑区变化
计划 120msFcitx116.6 / 309.682.5 / 175.7120.9 / 271.7
计划 120ms直连123.1 / 336.284.3 / 184.1118.1 / 270.0
计划 90–230ms 抖动Fcitx127.9 / 351.185.9 / 199.5108.1 / 301.9
计划 90–230ms 抖动直连130.5 / 332.783.1 / 197.4141.1 / 338.6

实际输入节奏与对时 ​

轮次实际键间隔均值,ms键间隔 P95,ms相对计划迟到 P95,ms对时前后漂移,ms
steady-r1-fcitx162.42321320-5.5
steady-r1-direct165.223625580.7
steady-r2-direct163.1238135611.6
steady-r2-fcitx164.62352076-5.0
steady-r3-fcitx167.624435263.8
steady-r3-direct163.424018084.4
fast-direct165.6249229044.1
fast-fcitx164.1235218622.1
jitter-fcitx168.725624654.2
jitter-direct166.62331882-1.4

计划 120ms 的快速轮没有达到目标压力:两版实际均值约 164–166ms,且累计迟到 P95 已达约 22 秒。 所以它只是在“尽快同步注入”条件下的观察,不能证明严格 120ms 连续输入不丢键,也不能当作最大吞吐测试。 常速实际均值约 162–168ms,两版也存在节奏波动。若要研究更快输入,应另做独立发键、准确记录 UP 与异步队列积压的测试,不用本轮数据替代。

显示设备报告 1080×1920、420dpi、约 60Hz;编码器实际输出 1080×1920 的变帧率视频。 各录像 PTS 帧间隔中位数约 100–110ms、P95 约 252–323ms;变帧率包含静止画面合并, 不能把名义 60Hz 当作每 16.7ms 都有一张独立的新录像帧。独立色块每轮 12 次匹配均通过, 残差跨度 14.3–33.5ms,前后漂移绝对值不超过 11.7ms;约 0.8ms 的常速候选 P50 差异没有可解释的精度。

变化像素门槛敏感性 ​

同一批轨迹、同一色块时钟,改用原 final_latency.js 的候选 >25、编辑区 >15 门槛。 候选指标在全部十轮与主分析相同。编辑区严格门槛明显改变检测结果,常速三轮汇总如下:

指标Fcitx直连
空格上屏 P50274.3 ms279.8 ms
空格上屏 P95466.7 ms458.4 ms
检测到的空格上屏162/192(各轮 57, 61, 44)179/192(各轮 59, 61, 59)

严格门槛会漏掉压缩后较小的文本变化,并可能匹配到更晚的编辑区变化;主门槛也不能消除所有画面采样误差。 因此不依据这项分析选择一组更好看的百分比;上屏结论是没有一致提速证据。 完整复算见 sensitivity.json,可对保留的压缩轨迹运行 tools/screen-perf/sensitivity.py。

运行组件及归档 ​

两版 LTS 映射与实际选项均逐轮核验。Fcitx 版 APK/进程含 Fcitx5Core、Utils、Config、 AndroidFrontend、通知、剪贴板及 Rime 插件等 9 个原生库;直连 APK/进程只有 libdirect-rime.so 和 libc++_shared.so,全部 7 轮直连记录均未映射 Fcitx Core。 这是运行组件核验,与“是否更快”是两个需要分别举证的问题。

永久原始记录在 perf/2026-10-17-wanxiang-screen: 保留 14 轮实际事件、完整参考文本、有效配置、输入前后宿主状态、内存快照、10 份逐帧差分和 PTS、 独立对时残差、APK/工具/模型校验值以及汇总。压缩只改变存储形式,不删减轨迹内容。 本地重算 comparison.json 与 CI 版本逐字节一致,另有独立 verification.json 核验记录。 原始视频约 55 MB,随正式运行的独立 artifact 保存至 2026-10-31;APK artifact 保存至 2026-10-20。

校准与 CI 记录 ​

正式矩阵使用通过配置、提交文本和独立对时检查的固定 APK。此前校准运行未并入性能结果:

  • 39023446963:LTS 可变发布更新,固定哈希检查阻止使用不同模型。
  • 39024457209:构建两版固定 APK;发现真实编辑会话需要从配置保存上下文调频状态。
  • 39040359665:测试编辑器的 setText 引发输入连接重启,改用原 Editable 清空并等待选择更新。
  • 39040919285:短轮提交文本一致,录屏已保存;分析参数不兼容云端 FFmpeg。 随后用这份实际录像验证兼容修复和独立对时,没有把校准数据拼入正式矩阵。
  • 39041560189:发现滤镜时间基准问题后主动取消,改用显式时间基准并在实际录像上验证。

产品源码没有因这些测试工具修正而改变。e8fffb64 的 PR CI 和 Direct Rime experiment 均通过,包括 471 项 JVM 单测、四 ABI 核验、原生检查及 7 项完整前端设备回归。