富文本长文档输入压力测试
条件
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 参与讨论。
有疑问或建议,欢迎到 GitHub 提交 Issue 参与讨论。