高性能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文档解析器介绍
发布评论