Loading... # mmdr:基于 Rust 的超高性能 Mermaid 图表渲染器 # 一、新闻概述 ## 1. 标题 mmdr:纯 Rust 实现的 Mermaid 图表渲染器,性能提升 500-1000 倍 ## 2. 发布时间 2026 年 1 月 28 日(最新版本 v0.1.2) ## 3. 来源 GitHub 开源项目 # 二、核心内容 ## 1. 事件摘要 ### A. 主要内容 mmdr(mermaid-rs-renderer)是一个用纯 Rust 编写的 Mermaid 图表渲染工具,完全无需浏览器依赖,相比官方的 mermaid-cli 性能提升 500-1000 倍。 ### B. 核心亮点 - 500-1000 倍性能提升 - 零浏览器依赖,无需 Node.js、Puppeteer、Chromium - 支持 13 种 Mermaid 图表类型 - 可作为 CLI 工具或 Rust 库使用 ## 2. 关键信息 ### A. 版本号 v0.1.2(最新版本) ### B. 重要数据 - GitHub Stars:554 - 性能提升:958x(流程图)、1080x(状态图) - 内存占用:约 15 MB(vs mermaid-cli 300+ MB) - 冷启动时间:约 3 ms(vs mermaid-cli 2000 ms) ### C. 涉及产品 Rust、Mermaid、SVG、PNG ## 3. 背景介绍 ### A. 前置技术 官方 mermaid-cli 工具基于 Node.js 和 Puppeteer,每次渲染都需要启动无头 Chromium 浏览器,导致 2-3 秒的启动开销。 ### B. 相关上下文 对于 CI/CD 管道、实时编辑器预览、批量文档生成等场景,mermaid-cli 的性能瓶颈成为严重问题。 # 三、详细报道 ## 1. 主要内容 ### A. 技术实现 mmdr 使用纯 Rust 实现了完整的 Mermaid 渲染管线: ```mermaid graph LR A[.mmd 文件] --> B[parser.rs] B --> C[ir.rs] C --> D[layout.rs<br/>dagre_rust] D --> E[render.rs] E --> F[SVG] F --> G[resvg] G --> H[PNG] style A fill:#e1f5fe style H fill:#c8e6c9 ```  ### B. 性能对比 | 图表类型 | mmdr | mermaid-cli | 加速比 | |---------|------|-------------|-------| | 流程图 | 2.75 ms | 2,636 ms | 958x | | 类图 | 3.19 ms | 2,381 ms | 746x | | 状态图 | 2.45 ms | 2,647 ms | 1,080x | | 时序图 | 2.47 ms | 2,444 ms | 990x | ### C. 使用场景对比 | 使用场景 | mermaid-cli | mmdr | |---------|-------------|------| | CI/CD 管道(50 图表) | 约 2 分钟 | < 1 秒 | | 实时编辑器预览 | 无法使用 | 即时 | | 批量文档生成 | 喝杯咖啡的时间 | 眨眼之间 | ## 2. 技术细节 ### A. 架构差异 ```mermaid graph TB subgraph mmdr["mmdr 架构"] M1[.mmd] --> M2[原生解析器] M2 --> M3[dagre_rust 布局] M3 --> M4[原生渲染器] M4 --> M5[SVG/PNG] end subgraph mermaid-cli["mermaid-cli 架构"] C1[.mmd] --> C2[mermaid-js] C2 --> C3[dagre.js] C3 --> C4[浏览器 DOM] C4 --> C5[Puppeteer] C5 --> C6[Chromium] C6 --> C7[截图] C7 --> C8[PNG] end style mmdr fill:#c8e6c9 style mermaid-cli fill:#ffcdd2 ```  ### B. 资源消耗对比 | 指标 | mmdr | mermaid-cli | |------|------|-------------| | 运行时 | 原生二进制 | Node.js + Chromium | | 冷启动 | 约 3 ms | 约 2,000 ms | | 内存占用 | 约 15 MB | 300+ MB | | 依赖 | 无 | Node.js、npm、Chromium | ### C. 支持的图表类型 mmdr 支持 13 种 Mermaid 图表类型: - 核心:Flowchart、Sequence、Class、State - 数据:ER Diagram、Pie Chart、XY Chart、Quadrant Chart - 计划:Gantt、Timeline、Journey - 其他:Mindmap、Git Graph ## 3. 安装与使用 ### A. 安装方式 从源码安装: ```bash cargo install --path . ``` Homebrew(macOS/Linux): ```bash brew tap 1jehuang/mmdr && brew install mmdr ``` Scoop(Windows): ```bash scoop bucket add mmdr https://github.com/1jehuang/scoop-mmdr scoop install mmdr ``` AUR(Arch Linux): ```bash yay -S mmdr-bin ``` ### B. 基本使用 管道方式: ```bash echo 'flowchart LR; A-->B-->C' | mmdr -e svg ``` 文件方式: ```bash mmdr -i diagram.mmd -o output.svg -e svg mmdr -i diagram.mmd -o output.png -e png ``` 批量渲染 Markdown 中的图表: ```bash mmdr -i README.md -o ./diagrams/ -e svg ``` ### C. Rust 库使用 ```toml [dependencies] mermaid-rs-renderer = { git = "https://github.com/1jehuang/mermaid-rs-renderer" } ``` ```rust use mermaid_rs_renderer::{render, render_with_options, RenderOptions}; // 简单单行渲染 let svg = render("flowchart LR; A-->B-->C").unwrap(); // 自定义选项 let opts = RenderOptions::modern() .with_node_spacing(60.0) .with_rank_spacing(80.0); let svg = render_with_options("flowchart TD; X-->Y", opts).unwrap(); ``` # 四、影响分析 ## 1. 行业影响 ### A. 技术趋势 - Rust 在高性能工具开发中的优势进一步凸显 - 原生实现 vs JavaScript 运行时的性能差距显著 - 浏览器依赖的去除带来部署便利性 ### B. 竞争格局 - 对 mermaid-cli 形成直接竞争 - 适合对性能要求高的场景 - 可能在 CI/CD、文档生成等场景替代现有工具 ## 2. 用户影响 ### A. 现有用户 - 从 mermaid-cli 迁移成本:低(API 兼容) - 性能收益:显著 - 部署复杂度:大幅降低 ### B. 潜在用户 - 需要 Mermaid 渲染但无法承受浏览器依赖的场景 - 需要高性能批量渲染的用户 - 嵌入式 Rust 应用需要图表渲染能力 ## 3. 技术趋势 ### A. 技术方向 - 原生实现重新定义性能基准 - Rust 在开发者工具领域的应用持续扩大 - 无浏览器依赖成为重要优势 ### B. 生态影响 - 可能催生更多 Rust 版本的 JavaScript 工具 - 推动 Mermaid 生态在高性能场景的应用 # 五、各方反应 ## 1. 项目数据 - GitHub Stars:554 - Forks:15 - Contributors:3 人 - 最新版本:v0.1.2(2026-01-28) ## 2. 技术特点 ### A. 优势 - 极致性能:500-1000x 提升 - 零依赖:无需浏览器、Node.js - 低资源占用:内存仅 15 MB - 快速启动:冷启动 3 ms ### B. 局限 - 图表类型覆盖:13 种(少于官方 mermaid-js) - 功能完整度:部分高级特性可能尚未实现 - 社区规模:相对较小 ## 3. 适用场景 最适合的场景: - CI/CD 管道中的图表渲染 - 实时编辑器预览 - 批量文档生成 - 资源受限环境 # 六、相关链接 ## 1. 项目地址 - GitHub 仓库:https://github.com/1jehuang/mermaid-rs-renderer ## 2. 技术文档 - 项目 README - 性能对比报告 - 使用示例 *** ## 参考资料 1. [mermaid-rs-renderer GitHub Repository](https://github.com/1jehuang/mermaid-rs-renderer) 最后修改:2026 年 01 月 31 日 © 允许规范转载 赞 如果觉得我的文章对你有用,请随意赞赏