把 Org 解析器提速 6.4 倍,还不许改变语义
来源:jointhefreeworld.org — 2026-10-23
📋 概述
OrgWebAlchemy 是用 Guile 写的 Org mode 解析与渲染库,用 PEG 语法把 Org 解析成语法树,再输出 HTML、Markdown 或 SXML。这篇续作讲的是如何在不让语言行为悄悄变样的前提下提速:58KB 文档从 32.2ms 降到 5.1ms,分配量从 30.3MB 降到 3.9MB,一行 80KB 的极端文档从 8.2 秒降到 0.37 毫秒,因为旧路径在行长上是二次的。正确性靠 155 个测试定义、281 条断言和约 7 万个输入的新旧解析器等价性对比来守。
🔑 核心要点
- 58KB 文档解析从 32.2ms 降到 5.1ms,提升 6.4 倍
- 分配量从 30.3MB 降到 3.9MB,垃圾少 7.8 倍
- 一行 80KB 的文档从 8.2 秒降到 0.37 毫秒,因为旧实现按行长平方增长
- 链接分类移进解析器只做一次,避免 HTML 与 Markdown 两个渲染后端各自漂移出不同语义
- 正确性验证:155 个测试定义、281 条断言,约 7 万个输入做新旧解析器等价性对比
💡 金句
A number you can't check is advertising, not evidence.
👍 0
👎 0
← 返回 Lobsters 首页