高性能Go语言Markdown文档解析器介绍

编程入门 行业动态 更新时间:2024-10-28 14:30:39

<a href=https://www.elefans.com/category/jswz/34/1769216.html style=高性能Go语言Markdown文档解析器介绍"/>

高性能Go语言Markdown文档解析器介绍

wego/wmd是一款Go语言Markdown文档解析器,突出特点是解析性能高,支持基本的Markdown语法,并对图片以及表格进行了扩展。具体特征如下:

  • 解析性能高。
  • 支持图片块,可定义图片的aling属性以及图片的高度、宽度。
  • 支持表格块的显示,可定义表格的aling属性、宽度属性、是否显示标题,以及单元格的aling属性。

代码

go get github/haming123/wego/wmd github

快速上手

func HandlerShowMd(w http.ResponseWriter, r *http.Request)  {file_name := "./demo.md"input, err := os.ReadFile(file_name)if err != nil {log.Error(err)w.WriteHeader(500)return}w.Write(wmd.MarshalHtml(input))
}

性能测试

demo.md解析测试

对于demo.md的内容(去掉扩展部分)进行解析,分别使用wmd以及blackfriday进行测试:

func BenchmarkMarshalHtml(b *testing.B) {file_name := "../demo.md"input, err := os.ReadFile(file_name)if err != nil {b.Error(err)return}b.StopTimer()b.StartTimer()for i := 0; i < b.N; i++ {MarshalHtml(input)}b.StopTimer()
}
func BenchmarkMarshalHtml2(b *testing.B) {file_name := "./demo.md"input, err := os.ReadFile(file_name)if err != nil {b.Error(err)return}b.StopTimer()b.StartTimer()for i := 0; i < b.N; i++ {blackfriday.MarkdownCommon(input)}b.StopTimer()
}

测试的结果如下:

go test -v -run=none -bench="BenchmarkMarshalHtml" -benchmem
pkg: wmd
BenchmarkMarshalHtml-6             98636             11932 ns/op            6921 B/op         59 allocs/op
pkg: blackfriday
BenchmarkMarshalHtml2-6            42728             27885 ns/op           18900 B/op        242 allocs/op
README.md解析测试

README.md文件主要是代码和文字,测试结果如下:

pkg: wmd
BenchmarkMarshalHtml-6            126990              9226 ns/op            6113 B/op         33 allocs/op
pkg: blackfriday
BenchmarkMarshalHtml2-6            51812             23099 ns/op           22182 B/op        122 allocs/op

更多推荐

高性能Go语言Markdown文档解析器介绍

本文发布于:2024-03-07 13:41:11,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1717986.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:高性能   语言   文档   Markdown

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!