#青训营 x 字节后端训练营# day14
Go 语言官方库给我们一贯的印象是:强大、好用。但是,金无足赤,人无完人,在一些性能要求苛刻的场景例如 json 解析,某些官方库的表现不尽如人意。
本文介绍几个对标官方库的开源库,它们的性能远超前者。当读者在使用这些官方库遇到性能问题时,可以尝试替换优化。
net/http -> fasthttp
地址:github.com/valyala/fas…
fasthttp号称比net/http快十倍,其优化的核心思路很简单:资源复用。


复用 goroutine,减轻 runtime 调度压力;


对象复用,大量使用 sync.Pool 减轻 GC 压力。


除了复用,还有其他的一些优化手段,例如尽量避免 string 与 []byte 的转换开销等。
这些优化技巧和最佳实践,在其 Github 主页上已经贴心给出:_github.com/valyala/fas…
因为fasthttp的实现与标准库差距较大,所以它与net/http的 API 接口是不同的,这导致从net/http重构为fasthttp需要一些学习成本。
使用fasthttp的知名项目:Fiber、Gearbox、atreugo 等。
encoding/json -> jsoniter
地址:github.com/json-iterat…
jsoniter(json-iterator)是一款快且灵活的 JSON 解析器,同时提供 Java 和 Go 两个版本。官方称 Golang 版本可以比标准库(encoding/json)快 6 倍之多。
展开
评论