为什么fasthttp比net / http更快?

时间:2017-01-13 05:31:35

标签: go fasthttp

基于fasthttp的服务器最多比net/http快10倍。

哪些实施细节使fasthttp快得多?此外,它如何比net/http更好地管理传入请求?

1 个答案:

答案 0 :(得分:19)

来自http implementation fasthttp in golang的文章“husobee”提及:

  

嗯,这是一个更好的实现,有几个原因:

     
      
  1. 工作池模型是零分配模型,因为工作者已经初始化并准备好服务,而在stdlib实现中,go c.serve()必须为goroutine分配内存。
  2.   
  3. 工作池模型更容易调整,因为您可以增加/减少您能够接受的工作单元数量的缓冲区大小,而不是stdlib中的fire and and forget模型
  4.   
  5. 工作池模型允许处理程序通过通道通信与服务器建立更多连接,如果服务器需要关闭,例如,它将能够比stdlib实现更容易地与工作人员通信
  6.   
  7. 处理程序函数定义签名更好,因为它只接受包含处理程序所需的请求和编写器的上下文。这比标准库更好,因为你从stdlib获得的只是一个请求和响应编写器......在go1.7中包含请求中的上下文的工作几乎是一个黑客,可以给人们他们真正想要的东西(上下文)没有打破任何人。
  8.         

    总的来说,编写一个具有工作池模型的服务器来处理请求更好,而不是仅为每个请求生成一个“线程”,而无法开箱即用。