Notist
On this page
  1. 多情形历轮性能对照(2026-11-03)
  2. 主要发现
  3. wall 中位数(s)
  4. 峰值 RSS 中位数(MiB)
  5. comemo 实际工作次数(编译 / 绑定)
  6. 方法与边界
  7. 结果与复现

多情形历轮性能对照(2026-11-03)

每个历史点并排比较五种完整负载,不把冷/热编辑序列当作历史版本,也不复用旧报告的时间。

本轮完成 18 个点 × 5 个负载 × 5 轮 = 450 次普通 CLI 测量;每格完整预热与验证,共 90 格,另有 85 次独立探针。图中每个历史点恰有五条,可切换耗时、RSS、统一/独立刻度,以及相对 Tera 的比例。

主要发现

  • XIV:Tera 6.402 → 当前 3.620 s,减少 43.5%。模板、Python、语义共享优化的收益仍然可见。

  • 新负载揭示了资源重构的明显退化,不能只用生产 XIV 的曲线概括所有情形:

情形

环境句柄版 s

资源重构版 s

后者 / 前者

完整 XIV DB

3.2685

3.6153

1.11×

无模块正文

0.4820

1.9431

4.03×

共享组件图

1.0241

6.8112

6.65×

每页私有模块图

1.0265

39.7276

38.70×

宽导出/通配绑定

3.1272

7.5157

2.40×

  • comemo 在宽导出/通配绑定情形中有明确收益:off 7.368 → compile 5.641 → both 5.390 s,off→both 减少 26.8%;RSS 1080.3 → 216.4 MiB。绑定缓存在仅编译缓存之外再减少约 4.4% wall,五轮范围不重叠。

  • 共享组件图 off→both 约减少 3.8%;私有图没有首轮跨页编译复用,5120 次编译仍全部执行,没有明显整站收益。XIV 和无导入负载不发生模块编译,不能评价编译缓存的潜在收益。

  • 当前仍未追回资源重构引入的人工情形退化。探针将主要增量定位到分析/求值,而非模板或发布:当前私有图一次探针约 28.76 s analyze、10.25 s evaluate,模板约 1.4 ms。探针只有一次,用于量级定位,不替代五轮 CLI 排名。

  • 代码证据:ResourceSession.source_bytes 在每次读取(包括缓存查询之前)调用 validate;validate 遍历全部已观察文件与 kinds,FsReader.revision 会重新打开文件并取 metadata,evaluate 前后还全量校验。私有模块图不断扩大观察集合,是明确的后续排查点。没有单独消融这些检查,不声称它解释了全部增量;本轮未移除授权/版本检查、未修改引擎。

  • 前一次 MemoryResources 组装例不能代替文件系统 CLI 历轮曲线:这里测到了物理输入版本检查与完整发布,兼容样例的参数类型也不同。两批绝对秒数不相减。

wall 中位数(s)

对照点

完整 XIV DB

无模块正文

共享组件图

每页私有模块图

宽导出/通配绑定

handlebars · 存档 Handlebars 优化基线

6.8533

0.5035

1.0559

1.0718

3.1816

tera · Tera 2

6.4022

0.5057

1.0614

1.0732

3.1884

renderer · 直接 Renderer

6.0684

0.4972

1.0515

1.0623

3.1829

html-shared · 共享 HTML targets

5.6795

0.4965

1.0474

1.0604

3.1533

borrowed · 去中间 JSON

5.0524

0.4924

1.0468

1.0575

3.1579

context · 共享 Tera 值

4.7943

0.4881

1.0370

1.0487

3.1697

json-batch · Python 批量紧凑编码

4.1943

0.4910

1.0444

1.0465

3.1850

catalog · 目录四字段摘要

4.0348

0.4893

1.0380

1.0471

3.1652

semantic · 共享语义定义

3.6216

0.4851

1.0255

1.0331

3.1325

environment · 复用环境句柄

3.2685

0.4820

1.0241

1.0265

3.1272

resources · 资源/共享值/Data

3.6153

1.9431

6.8112

39.7276

7.5157

modules · 模块分层

3.5924

1.9243

6.7437

39.0030

7.3725

listen · CLI listen 控制

3.6203

1.9389

6.7564

39.5798

7.3787

memo-off · comemo ablation:off

3.6204

1.9215

6.7747

39.2709

7.3683

memo-compile · comemo ablation:compile

3.6246

1.9317

6.6349

39.5528

5.6410

memo-both · comemo:both

3.6184

1.9362

6.5174

39.4480

5.3901

head · 2468767:移除模板 Markdown helper

3.6033

1.9433

6.5329

39.4297

5.3801

current · 当前已提交版本

3.6202

1.9113

6.4449

39.0049

5.3802

峰值 RSS 中位数(MiB)

对照点

完整 XIV DB

无模块正文

共享组件图

每页私有模块图

宽导出/通配绑定

handlebars

2577.2

100.4

180.6

183.2

910.2

tera

2432.7

100.4

179.2

181.6

908.8

renderer

2433.1

100.4

179.1

181.7

908.9

html-shared

2433.1

100.4

179.3

182.1

909.2

borrowed

2004.7

100.4

175.4

177.9

904.2

context

1524.5

100.4

172.0

174.5

899.5

json-batch

1524.3

100.4

171.9

174.5

899.5

catalog

1431.9

100.4

171.8

174.5

899.4

semantic

780.0

100.4

165.7

168.2

893.7

environment

780.1

100.4

165.5

168.2

893.7

resources

824.8

100.4

220.2

227.9

994.9

modules

822.1

100.4

235.8

243.8

1080.1

listen

822.0

100.4

236.0

243.9

1080.2

memo-off

822.3

100.4

236.0

244.2

1080.3

memo-compile

822.2

100.4

164.8

244.9

399.3

memo-both

822.1

100.4

146.0

248.2

216.4

head

822.3

100.4

145.8

248.1

216.3

current

822.2

100.4

146.6

249.1

216.9

comemo 实际工作次数(编译 / 绑定)

模式

完整 XIV DB

无模块正文

共享组件图

每页私有模块图

宽导出/通配绑定

memo-off

0 / 51739

0 / 521

5192 / 5713

5120 / 5641

3072 / 3593

memo-compile

0 / 51739

0 / 521

18 / 5713

5120 / 5641

6 / 3593

memo-both

0 / 0

0 / 0

18 / 139

5120 / 5632

6 / 11

current

0 / 0

0 / 0

18 / 139

5120 / 5632

6 / 11

方法与边界

  • XIV 使用完整固定 CSV(51,225 详情 + 513 目录 + 首页),沿原先时间线切换三档 Python 脚本。四个人工站点均为 512 详情 + 8 目录 + 首页,不随历史版本改变。

  • XIV 大量页面源由 prepare 返回为虚拟文档,人工站点实际从磁盘发现页面和模块文件。物理观察集合大小不同是负载差异之一,不可仅按页数跨情形推断每页效率。

  • 人工站点的整数在输入边界显式格式化为 String,Bool 条件分支保留;没有使用早期不存在的 str、数组方法、for 或 Data API。这是跨版本兼容的新负载,未混入旧模块样例秒数。

  • 共享/私有图使用相同内容与 13 字段组件,私有图每页不同源身份;宽导出包含四个 64 函数库、通配 facade 及八套 32 行布局,所有 256 个标签函数均实际使用,没有纯粹填充的未调用函数。

  • 每次普通 CLI 是新进程,计时含启动、输入、完整 SSG、模板、发布写盘和旧输出清理;各负载采用固定输出路径。版本/情形轮转并反序交错,不与编译或 HTML 验证并发。

  • CPU 8,温文件缓存,不 fsync,不锁频;release debug=0、incremental=0、jobs=2。wait4 RSS 是进程高水位,不是进程树同时内存总和。小差异不作独立优化结论。

  • 复用的是原批次经过 SHA-256 核对、独立 target 构建的历史二进制与源码,不是旧计时。早期版本保留当时的 publication 路径补丁;Handlebars 是未恢复完整未提交源码的存档补充参照。

  • 当前点固定已提交 083ff6cd5eecae00a085a113a211f0f314ba0ae3,未包含 checkout-start.diff 中的 SSG 宿主政策修改。资源版本只在临时 CLI 显式统一 requests=1,000,000,仍正常读取、授权、版本检查和计费,未改生产源码。

  • Python 两步只影响 XIV,其余情形的引擎及输入完全相同,是控制点;comemo off/compile 是同一提交的消融,不是不同历史提交。

  • 90 格均检查完整页数、全部字段/目录行、物品路由及本地链接。所有 Tera 及后续产物逐文件字节一致,Handlebars/Tera 的 HTML 解析语义与非 HTML 字节一致。85 次探针也与相应普通产物逐文件一致。

  • 探针每格一次,只用于量级定位和确定性工作次数验证。普通 CLI 排名使用五轮中位数;完整样本、min/max 及包含式阶段存入 JSON,不重复累加父子阶段。

  • 新增 5 项矩阵/图表回归,连同既有工具共 16 项 Python 回归通过;图表 JS 语法检查通过,实际浏览器检查了历史点选择、资源重构跳转、独立刻度与 RSS 切换。

结果与复现

结果目录:/tmp/opencode/notist-history-matrix-20261103。

  • dashboard.html:交互分组图,按情形开关、耗时/RSS、统一/独立刻度和相对 Tera。

  • history-wall.svg、history-rss.svg:完整、不折叠的静态分组图。

  • summary.csv、summary.json:90 格汇总、范围及原始样本;runs.json:450 次 CLI;probes.json:85 次探针。

  • manifest.json、validation.json、validation-complete.json、inventories/、源码/二进制副本和 stdout/stderr:来源与完整性证据。

PYTHONDONTWRITEBYTECODE=1 python3 tools/profile_history_matrix.py all \
  --out /tmp/opencode/notist-history-matrix-NEW \
  --history /tmp/opencode/xiv-history-20261102 --runs 5 --cpu 8

方法说明与图表模板:tools/HISTORY_MATRIX_PROFILE.md、tools/history_matrix_chart.html。准备/构建/验证/计时/探针/报告支持分开执行;复用原条件可续跑,改变条件需用新结果目录。