ReWeave 性能报告:毫秒级构建的秘密
ReWeave 性能报告
在 ReWeave,我们非常看重性能。这不仅包括生成站点的运行性能(几乎是瞬间加载),还包括开发者的构建性能。
我们最近进行了一次“压力测试”,以观察框架在处理不断增加的文章数量时的表现。
测试方法
我们生成了大量的模拟 Markdown 文章,并测量了 npm run build 完成所需的总时间。这包括:
- 解析 Markdown 文件。
- 生成首页、名片页、文章页、分类页、标签页、统计页。
- 生成 RSS Feed 和 Sitemap。
- 编译 TailwindCSS。
测试在一台标准开发机器上运行,并启用了并行处理。
测试结果
| 文章数 | 构建时间 (秒) | 每篇文章耗时 (ms) |
|---|---|---|
| 50 | 5.67s | 113ms |
| 100 | 6.62s | 66ms |
| 250 | 6.52s | 26ms |
| 500 | 7.27s | 14ms |
极限基准测试 (优化后)
在进一步优化构建流程后:
| 文章数 | 构建时间 (秒) | 每篇文章耗时 (ms) |
|---|---|---|
| 500 | 6.99s | 14ms |
| 1000 | 9.72s | 9.7ms |
| 2000 | 14.76s | 7.4ms |
复杂内容测试
我们还测试了 300 篇 包含丰富内容(代码块、表格、列表、图片)的文章。
| 内容类型 | 文章数 | 构建时间 |
|---|---|---|
| 富文本内容 | 300 | 7.15s |
这证明了语法高亮和 GFM 处理对构建性能的影响微乎其微。
结果分析
- 固定开销:存在约 5-6 秒 的基础开销。这主要是由于 Node.js 启动时间和 TailwindCSS JIT 编译器初始化引起的。
- 线性扩展:一旦初始化完成,实际的文章处理速度极快。从 50 篇增加到 500 篇(增加 450 篇)仅增加了 1.6 秒 的构建时间。
- 新增功能影响:即使增加了统计页面生成、RSS 和 Sitemap 自动生成,构建时间依然保持在极低水平。
结论
ReWeave 已经为各种规模的博客做好了准备。无论你有 10 篇文章还是 2000 篇,构建过程都会保持迅捷,让你专注于写作。
接下来
最新压力测试结果 (复杂文章)
测试时间: 2025/12/20 19:30:08 内容包含: 代码块、Mermaid 图表、大文本、GFM 表格。
| 文章数 | 构建时间 (秒) | 每篇文章耗时 (ms) |
|---|---|---|
| 100 (Complex) | 6.85s | 68.5ms |
| 500 (Complex) | 12.04s | 24.1ms |
| 1000 (Complex) | 17.49s | 17.5ms |
2025/12/26 圣诞版压力测试
测试时间: 2025/12/26 测试环境: Weave 主题 + 圣诞特效开启 内容包含: 1000 篇复杂文章(代码块、数学公式、表格)。
| 文章数 | 构建状态 | 备注 |
|---|---|---|
| 1000 (Complex) | ✅ 成功 | 构建包含 1000+ 页面,系统响应正常。圣诞特效未对构建产生显著影响。 |
综合压力测试报告 (2025-12-26)
测试环境: Windows, Weave Theme, Christmas Effects Enabled 测试内容: 包含代码块、数学公式、表格的复杂文章。
| 文章数 | 总构建时间 (秒) | 平均每页耗时 (ms) |
|---|---|---|
| 500 (Complex) | 19.14s | 38.27ms |
| 1000 (Complex) | 26.72s | 26.72ms |
| 2000 (Complex) | 43.77s | 21.89ms |
极限优化测试 (2025-12-26 晚)
优化措施:
- 多线程并行处理: 引入 Worker Threads 将 Markdown 解析、数学公式渲染、代码高亮等 CPU 密集型任务移至工作线程池并行执行。
- 文件系统缓存: 实现
mkdir缓存机制,避免数千次重复的目录创建系统调用。 - 预计算 TOC: 在 Worker 线程中预先提取目录结构,减少主线程正则匹配开销。
测试结果:
| 文章数 | 构建时间 (秒) | 平均每页耗时 (ms) | 提升幅度 |
|---|---|---|---|
| 2000 (Complex) | 6.56s | 3.28ms | 6.6x |
结论:通过并行化和系统调用优化,我们将 2000 篇复杂文章的构建时间从 44 秒降低到了 7 秒以内,远超 20 秒的目标。
稳定多线程 Worker Pool 测试 (2025-12-27)
优化措施:
- 主管模式 (Supervisor Pattern): 实现
WorkerPool类,主线程管理任务队列和 Worker 生命周期。 - 错误恢复: 自动检测 Worker 崩溃并重启,确保构建过程不会因单个文件渲染失败而中断。
- 资源管理: 动态管理 Worker 数量(CPU 核心数 - 1),避免资源争抢。
测试结果:
| 文章数 | 构建时间 (秒) | 平均每页耗时 (ms) | 备注 |
|---|---|---|---|
| 1000 (Complex) | 10.01s | 10.01ms | 包含 LaTeX、Mermaid、代码块的复杂文章。构建稳定,无失败。 |
新的 Worker Pool 实现不仅保证了构建的稳定性,还保持了极高的性能。相比之前的单线程处理(约 26ms/页),性能提升了 2.6倍。
Comments
Comments are loading... (or not configured)