古老的榕树

Go 的 net/http 另一实现 fasthttp

潘军杰 发表于 2016-01-02 11:35 阅读(9715) 评论(1) 赞(0)
最近发现一个第三方 Go http 包,据作者的介绍很厉害,它是net/http的另一个实现包,高性能,低内存占用,比 Go net/http 内置包快 10 倍,哇,这也太叼了吧。以下是作者的包介绍,项目开源地址: https://github.com/valyala/fasthttp

Fast HTTP package for Go. Tuned for high performance. Zero memory allocations in hot paths. Up to 10x faster than net/http

作者在乌克兰,离俄罗斯很近。

用了很牛逼的服务器作为测试机器,作者只公布测试结果。看了结果再看基本使用方法,发现一个问题,有不少的方法没有和 net/http 做兼容,这么说,现有的框架要使用 fasthttp 还真需要重新开发(修改),测试;才能让用户用上fasthttp,要推行,估计要些时日了。

我很好奇,为什么性能提升这么大?以 net/http 基准做测试,快出 10 倍,有点不可思议。作者很多极力推崇 sync.Pool ,而且 net/http 原先的设计很保守,对象一旦周期到,就释放掉,完全没有做一些复用重置的考虑,fasthttp 正是抓住了一个点,改进了net/http。

我不知道 Go 1.6 以后,http2 能不能有质的飞跃,也就是就说 会不会和 fasthttp 有些重合,毕竟再过几个月 Go 1.6 就要出来了,而 fasthttp 还处在开发功能性的阶段。这个性能测试 如果是真实可靠也罢,有时候 template 的渲染,数据 db 的读写,会降低整体的表现,所以说 net/http 现今的性能也就不差了,再几倍 十几倍的提升,其他组件上的性能也需要跟上才说得过去。

总之,fasthttp 这总追求极致性能的做法还是值得去做的,有这些人的努力,Go 才会越来越好!

标签: Go 语言
1 条网友评论

1 楼: Xia 发表于 2023-10-17 17:02:41   回复 TA

fasthttp 已经在fiber作为底层了。
称呼*
邮箱*
内容*
验证码*
验证码 看不清换张