一个fasthttp基于服务器高达10倍的速度比net/http.
哪些实现细节fasthttp变得更快?而且,它如何更好地管理传入请求net/http?
Von*_*onC 23
来自husobee的文章" golang fasthttp in golang "中提到:
嗯,这是一个更好的实现,原因有以下几点:
- 工作池模型是零分配模型,因为工作者已经初始化并准备服务,而在stdlib实现中,
go c.serve()必须为goroutine分配内存.- 工作池模型更容易调整,因为您可以增加/减少您能够接受的工作单元数量的缓冲区大小,而不是stdlib中的fire和forget模型
- 工作池模型允许处理程序通过通道通信与服务器更加连接,如果服务器需要关闭,例如,它将能够比stdlib实现更容易地与工作人员通信
- 处理程序函数定义签名更好,因为它只接受包含处理程序所需的请求和编写器的上下文.这比标准库更好,因为你从stdlib获得的只是一个请求和响应编写器......在go1.7中包含请求中的上下文的工作几乎是一个黑客,可以给人们他们真正想要的东西(上下文)没有打破任何人.
总的来说,为服务请求编写一个带有工作池模型的服务器更好,而不是仅为每个请求生成一个"线程",而无法开箱即用.
| 归档时间: |
|
| 查看次数: |
8810 次 |
| 最近记录: |