Skip to content

oiyojs/performance

Repository files navigation

Oiyo · Performance

内存压测

微信小程序(mp-weixin)开发态 Node 进程内存压测 说明与实测报告。

本仓库在标准 Oiyo + Wot UI starter 之上,附带 120 个压测页、生成脚本、内存监控脚本与原始采样数据,用于回答:

  1. 页面数量到 100+ 时,pnpm dev mp-weixin 会不会 OOM?
  2. 重模板(Wot UI + 大列表 + 假数据)对首次编译内存有多大影响?
  3. 编译就绪后批量改动 120 个文件(HMR / 差量编译)时,内存是否持续爬升?

监控范围

监控 不监控
Node / Vite / Oiyo 编译进程树 RSS(Working Set) 微信开发者工具自身内存
首轮编译与 watch 稳态 真机 / 模拟器小程序运行时 JS 堆
批量 touch 触发的差量编译 页面 FPS、包体积、冷启动耗时

仓库内材料

路径 作用
src/packages/oom-stress/page-001 ~ page-120 120 个分包压测页
scripts/generate-oom-stress-pages.mjs 批量生成 / 覆盖压测页
scripts/monitor-mp-weixin-memory.mjs 启动 dev、采样进程树 RSS、ready 后批量 touch
scripts/oom-reports/ 历次 JSON / CSV / Markdown 原始报告

压测页负载

  • Wot UIWdTagWdInputWdButtonWdCell / WdCellGroupWdIconWdProgress
  • 大模板:6 分区 × 每区 24 行列表 + 详情卡片(标签、按钮组、指标条、进度条)
  • 假数据:订单 / 用户 / 标签 / 长描述 / metrics 数组等合成数据

测试环境

OS Windows
Node v22.21.1
命令 pnpm exec oiyo dev mp-weixin
Heap 上限 NODE_OPTIONS=--max-old-space-size=4096
压测页数 120(packages/oom-stress
采样方式 进程树 RSS,约每 2 秒一次

结果总览

场景 峰值 tree RSS 首轮 ready OOM 文案 结论
A 轻量 120 页 · 仅 dev 1195 MB ~20.7s 页数本身打不爆 Node
B 重页 120 页 · HMR×3(第 1 轮) 3640 MB ~32.6s 批量 HMR 显著抬升内存
C 重页 120 页 · HMR×3(第 2 轮) 4026 MB ~27.8s 峰值贴近 4GB 上限;post 稳态不回落

OOM 判定关键字:JavaScript heap out of memory / FATAL ERROR / Allocation failed
三轮实测均未命中。

场景 A · 轻量页 · 仅编译与 watch

条件:120 个轻量页,不批量 touch。

阶段 tree RSS
启动 ~89 MB
编译中峰值 ~1136 MB
含 IDE 拉起峰值 1195 MB
watch 稳态 ~825–895 MB

要点:首次编译可完成;进入 watch 后内存回落并稳定,未见持续爬升。

场景 B · 重页面 · 批量 HMR

条件:重模板 120 页;ready 后对全部 index.vue 写入/更新 <!-- hmr-touch:... -->,强制 watcher 失效,触发差量编译;共 3 轮。

第 1 轮

phase start → end (MB) max (MB) delta (MB)
boot 89 → 1636 1636 +1547
pre-hmr-steady 1636 → 1244 1636 -392
HMR round 1 1344 → 2385 2385 +1041
HMR round 2 2468 → 3176 3176 +708
HMR round 3 3266 → 3640 3640 +374
post-hmr-steady 3640 → 3329 3640 -311

第 2 轮

phase start → end (MB) max (MB) delta (MB)
boot 89 → 1590 1590 +1501
pre-hmr-steady 1590 → 1234 1591 -356
HMR round 1 1339 → 2749 2749 +1410
HMR round 2 2962 → 3409 3409 +447
HMR round 3 3391 → 3847 4026 +456
post-hmr-steady 3847 → 3847 3847 0

结论

  1. 仅堆页数(100+ 轻量页) 不足以让本机 dev mp-weixin 触发 Node OOM;watch 可稳定在约 1GB 以下。
  2. 重模板 + Wot UI + 假数据 抬高首次编译成本:ready 约 28–33s,boot 峰值约 1.6GB。
  3. HMR 批量失效 120 个重页面 是主要内存放大器:单轮 touch 常见 +0.4~1.4GB;两轮复测峰值 3.6GB → 4.0GB

About

🏎 oiyo 框架的性能测试

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors