周末项目: markdown 流式解析 + 渲染双重优化

1 天前
 1244943563

最近看到 markdown-stream-vue 比较火热,但想要实际使用的时候发现并不符合个人使用场景,并且其仅在 vue 渲染层做了优化,实际每次来新的 chunk 后还是会拼接之前收到的所有 markdown 字符串重新使用 markdown-it 做解析,但我想要的是从解析的层面就支持流式解析,因此有了当前项目 incremark

它从收到 chunk 的时候就开始进行解析,之前已解析完成的块则不会重复解析,渲染层也支持了 vue/react 主流框架,后续会支持 svelte 与 solid 。

理论上来讲,当前的优化将 O(n²) 的解析优化到了 O(n),因此文档越大,收益越高,下面为实际 benchmark 测试,测试大文档流式解析收益达到了 46 倍,短小的 markdown 也有 2-20 倍的收益。

感兴趣可以查看官网 https://incremark-docs.vercel.app/zh/

Benchmark 测试结果(节选总结部分):


================================================================================
📈 Complete Benchmark Summary
================================================================================

| Document Size    | Chunk | Time Saved | Chars Saved | Speedup |
|------------------|-------|------------|-------------|---------|
| Short (~1KB)     | 10    |      60.7% |       98.0% |   2.54x |
| Short (~1KB)     | 50    |      52.6% |       90.5% |   2.11x |
| Medium (~5KB)    | 10    |      91.1% |       99.6% |  11.28x |
| Medium (~5KB)    | 50    |      89.5% |       98.0% |   9.48x |
| Long (~10KB)     | 10    |      95.6% |       99.8% |  22.78x |
| Long (~10KB)     | 50    |      94.2% |       99.0% |  17.11x |
| Very Long (~20KB) | 10    |      97.8% |       99.9% |  45.99x |
| Very Long (~20KB) | 50    |      97.3% |       99.5% |  37.36x |

--------------------------------------------------------------------------------

📊 Average by Document Size:

   Short (~1KB): 2.33x faster, 56.7% time saved
   Medium (~5KB): 10.38x faster, 90.3% time saved
   Long (~10KB): 19.94x faster, 94.9% time saved
   Very Long (~20KB): 41.67x faster, 97.5% time saved

--------------------------------------------------------------------------------

🎯 Overall Average:
   Time Saved: 84.8%
   Chars Saved: 98.0%
   Speedup: 18.58x

================================================================================

654 次点击
所在节点    分享创造
5 条回复
Ocyss
23 小时 53 分钟前
看着挺不错的,点个 star 了,说不定日后能用上
twofox
23 小时 50 分钟前
可以,看着确实不错。start 一下
1244943563
23 小时 29 分钟前
@Ocyss 感谢
1244943563
23 小时 17 分钟前
@twofox 哈哈哈 感谢支持
gigode
17 小时 24 分钟前
感谢分享,我经常用的是这个 https://onlinenotepad101.org/markdown-editor

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1178905

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX