Почему fastthttp быстрее, чем net/http?

fasthttp на основе сервера до 10 раз быстрее, чем net/http,

Какие детали реализации делают fasthttp намного быстрее? Кроме того, как он управляет входящими запросами лучше, чем net/http?

1 ответ

Решение

В статье " http реализация fasthttp на Голанге" от husobee упоминается:

Ну, это намного лучшая реализация по нескольким причинам:

  1. Модель рабочего пула - это модель с нулевым распределением, так как рабочие уже инициализированы и готовы к работе, тогда как в реализации stdlib go c.serve() должен выделить память для рутины.
  2. Модель рабочего пула легче настроить, так как вы можете увеличить / уменьшить размер буфера числа рабочих единиц, которые вы можете принять, по сравнению с пожарной и забыть модель в stdlib
  3. Модель рабочего пула позволяет обработчикам быть более связанными с сервером через канал связи, например, если серверу необходимо отключиться, ему будет легче общаться с работниками, чем в реализации stdlib.
  4. Подпись определения функции обработчика лучше, так как она принимает только контекст, который включает и запрос, и обработчик, необходимые обработчику. это УГРОМНО лучше, чем стандартная библиотека, так как все, что вы получаете от stdlib, это средство для написания запросов и ответов... Работа в go1.7 по включению контекста в запрос - это в значительной степени хак, чтобы дать людям то, что они действительно хотят (контекст) не ломая никого.

В целом, просто лучше написать сервер с моделью рабочего пула для обслуживания запросов, а не просто создавать "поток" для каждого запроса, без каких-либо ограничений.

Другие вопросы по тегам