资讯动态

Univer 性能测试:3 组测试和 6 个阈值,定位表格卡顿与内存涨量

发布时间:2026/9/12 15:44:24 来源:尧图企业网站定制
Univer 性能测试3 组测试和 6 个阈值定位表格卡顿与内存涨量【免费下载链接】univerUniver is a full-stack framework for creating and editing spreadsheets / word processor / presentation on both web and server.项目地址: https://gitcode.com/GitHub_Trending/un/univerUniver 是用于在 Web 和服务端创建、编辑电子表格、文档与幻灯片的全栈框架。本文带你跑通仓库里的 3 组性能测试回答两个高频疑问大数据表格卡顿一滚就掉帧是不是真 bug每开一次工作簿Univer 内存占用涨 200KB 算不算泄漏结论先说阈值都写死在 e2e 目录里不用拍脑袋。怎么跑起来3 组性能测试 两条命令先起演示站端口 3000再跑 Playwrightpnpm dev:e2e pnpm test:e2e三组测试各管一件事| 文件 | 验证内容 | | e2e/perf/scroll.spec.ts | 5 种数据下的滚动 FPS | | e2e/memory/memory.spec.ts | 实例创建、销毁后内存是否释放 | | e2e/disposing/disposing.spec.ts | 反复加载/卸载工作簿不出错 |6 个阈值速查内存阈值怎么定 下表数字直接取自仓库常量出处文件附后| 指标 | 阈值 | 出处文件 | 为什么是这个数 | | 单元内存涨量 | ≤1MB | memory.spec.ts | 两轮加载释放数据后的差值应只是单元格数据级别 | | 二次实例涨量 | ≤200KB | memory.spec.ts | 销毁后重建只该多出编译代码与全局缓存 | | 整体内存涨量 | ≤6MB | memory.spec.ts | 代码注释原话给编译代码和全局缓存留余量但必须装不下一个 Univer 对象 | | 空表格滚动 | 50 FPS | scroll.spec.ts | 最严没数据的裸画布理应满帧 | | 冻结窗格滚动 | 30 FPS | scroll.spec.ts | 冻结把画布拆成多层门槛略降 | | 合并单元格滚动 | 20 FPS | scroll.spec.ts | 合并区跨大块区域绘制更贵 | | 数据溢出滚动 | 50 FPS | scroll.spec.ts | 横向溢出是真实操作高频动作 | | 密集文本滚动 | 25 FPS | scroll.spec.ts | 满屏文字加样式负载最重 |FPS 判断用的是严格大于toBeGreaterThan刚好等于 50也算挂。结果去哪看测出数字后先查哪三个地方结果落在三个地方控制台滚动测试每轮打印 fps、medianFrameTime中位帧耗时、max10FrameTimes最慢 10 帧。快照文件内存测试会把 memory-first.heapsnapshot、memory-second.heapsnapshot 写进 test-results/用 Chrome DevTools 的 Memory 面板打开。遥测SHOULD_REPORT_TO_POSTHOGtrue 时3 个内存指标和 5 个 FPS 指标经 e2e/utils/report-performance.ts 上报方便跨版本对比趋势。内存测试的走位建实例 → 加载数据再释放一次 → 再加载一轮算差值 → 销毁 → 建第二个实例 → 再销毁算差值全程对比的是 JSHeapUsedSize。FPS 低于阈值先查什么 先别怪渲染器看帧耗时分布max10FrameTimes 只有个别尖峰、其余帧平稳 → 单帧问题查 GC 时机、字体加载、画布 resize。整段 fps 持续偏低 → 真渲染问题。按数据类型缩圈空表正常、合并格差问题就在合并区绘制跟数据量无关。误报提醒FPS 吃机器性能CI 的盒子跑不满本地开发机。跨环境差 5 帧不算回退同机同版本对比才有意义。电子表格 FPS 与内存泄漏检测怎么判定真泄漏 ⚠️内存测试红了先别盯数字盯快照打开两份 heapsnapshot 做比较快照看第二类实例比第一类多驻留了哪些对象类型。三个常见误报GC 不是瞬时的。测试每步采样前等 5 秒仍可能残留。数值贴线就重跑一遍看波动幅度再下结论。对比口径只有 JSHeapUsedSize。canvas/WebGL 里的显存不计入别把画布开销算进泄漏。disposing 测试通过 ≠ 内存释放。它只断言没抛 pageerror证明不崩不证明干净。不达标时的处理顺序同机、同浏览器、同数据复现先排除环境。FPS 掉帧看帧耗时分布区分单帧尖峰和持续掉帧。内存超线diff 两份堆快照定位对象类型。数据规模perf 数据文件都是固定构造如密集文本 1200 行 × 80 列先确认该规模达标再谈更大数据。二分提交前三步都排除后再用。不同开发阶段该盯哪组测试日常开发各包的 vitest 单测即可e2e 不用碰。发版前e2e/perf e2e/memory这两组是 Univer 性能测试的核心。长开页面协作场景一天不关加跑 e2e/disposing。公式引擎packages/engine-formula/ 有 1500 多个文件、数百个函数但仓库没有给它设性能阈值公式相关的 e2e 只有渲染视觉回归。要量计算耗时得自己加测。【免费下载链接】univerUniver is a full-stack framework for creating and editing spreadsheets / word processor / presentation on both web and server.项目地址: https://gitcode.com/GitHub_Trending/un/univer创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价