维刻 Vex
GitHub
维刻 Vex / 文档 / 富文本长文档输入压力测试

富文本长文档输入压力测试

条件

2026-10-18,Windows x64 原生 Profile,Flutter 3.47.7 / Dart 3.13.5,自定义标题栏,初始窗口 1280×900。基线应用为 921050a,对照仅修改即时编辑块的构建方式,没有更换原始文档或隐藏输入缓冲。

样本由测试公开生成:600 个章节、1800 个混合粗斜体/行内代码/链接/中英文段落、60 张表格和 60 个代码块,共 285449 个 UTF-16 字符、2520 个内容块。未使用用户文档。

操作

  • 打开文档、点击第一段进入编辑。
  • 修改段落并撤销 12 次,每次确认完整原文恢复。
  • 快捷键全文全选、Esc 收起 6 次,每次核对选区包括完整原文。
  • 全文替换为中文、一次撤销,确认保存基线与未修改状态恢复。

文本与候选通过控制器合成输入,快捷键携带物理键码。这不是 Windows 系统输入法或真机键盘验收。

结果

操作 基线中位耗时 按需构建中位耗时
打开 65.5 ms 61.7 ms
进入编辑 81.4 ms 76.0 ms
修改正文 99.4 ms 88.4 ms
撤销 100.0 ms 90.6 ms
全文全选 258.6 ms 243.9 ms
收起全选 51.1 ms 51.1 ms
替换全文 50.4 ms 50.6 ms

操作结束时采样 RSS 最大值从 324.1 MiB 降至 304.4 MiB。全选最大耗时从 308.2 ms 变为 324.6 ms,没有宣称最差延迟改善。耗时包含测试操作和 pumpAndSettle(16 ms),不是纯渲染时间、按键到屏幕延迟或 60 FPS 证明。数据为同机各一轮,仍需多轮及其他平台验证。

按需构建使用原有 SuperListView.builder,通过块起始位置键保留已挂载状态。未显示块不再预先建立整套控件和选区几何。完整源文、IME 输入值、选区坐标和共享撤销不变。

另一次缩小隐藏输入字体的试验把全选中位耗时增加到约 453 ms,已撤回,不包含在最终代码或对照结果中。隐藏全文输入仍有排版开销,后续优化不能牺牲中文候选、系统编辑命令与来源坐标。

基线数据 · 按需构建数据

复测

在 apps/vex 执行:

powershell
$env:VEX_RICH_PERFORMANCE_OUTPUT = 'D:/github/apps/Vex-Flutter/artifacts/rich-performance.json'
flutter drive --profile -d windows --driver test_driver/integration_test.dart --target integration_test/rich_document_performance_test.dart --no-pub

本项不代表完整长文档性能达标、跨平台通过或原型 98% 还原率已达标。

💬 评论暂未开启
有疑问或建议,欢迎到 GitHub 提交 Issue 参与讨论。
tems[selIndex] as HTMLAnchorElement).click(); } } });