DEV Community

Cover image for Benchmarks Clients Http
Wellington Martins
Wellington Martins

Posted on

Benchmarks Clients Http

Uma ação que faz parte do dia a dia na vida de um desenvolvedor, é a necessidade de consumir alguma API utilizando chamadas HTTP.

Para tal tarefa temos hoje algumas libs (bibliotecas), que tornam nosso trabalho mais fácil.

Realizei um benchmark com as libs mais populares no universo dotnet:

HttpClient:

É uma classe nativa do dotnet sendo a mais utilizada.

Podemos utilizar o HttpClient para enviar requisições HTTP e receber respostas HTTP baseada em um URI.

RestSharp:

É uma lib http client open-source, utilizada para o consumo de APIs.

Baseado nisso, podemos utiliza-lá instalando-a através do NuGet Package Manager.

RestSharp pode se comunicar com qualquer API usando o protocolo HTTP, seu proposito é o consumo de REST APIs.

Flurl:

É uma lib http client, seu nome é um trocadilho com Fluent URL.

Ele se descreve como "Um builder de URL moderno, fluente, assíncrono, testável, portável, cheio de buzzords e uma biblioteca com um client HTTP para dotnet”.

De fato a descrição é precisa com o que essa lib entrega.

Refit:

O Refit é uma biblioteca para dotnet com o intuito de facilitar o consumo de API's REST.

A ideia é fornecer interfaces que abstraem a comunicação com os serviços HTTP possibilitando a escrita de um código limpo e de baixo acoplamento usando poucas linhas de código.

Cenário para o benchmark:

  • Todas as requests foram realizadas para o jsonplaceholder, uma api fake utilizada para testes, mais informações sobre clique aqui.

  • Foram executadas 3 rodadas de testes, onde o resultado é o average das três execuções.

  • Utilizei os verbos: POST, PUT e GET.

Resultados:

Post em milissegundos

Quando realizamos um POST com um body, temos o Refit com o melhor resultado praticamente empatado com o Flurl, já o RestSharp obteve a pior performance.

Post Consumo Memória

No consumo de memória o Flurl fica com o troféu, HttClient e Refit praticamente empatados, mais um vez o RestSharp obteve o pior resultado.

Put em milissegundos

Já quando realizamos um PUT com um body, tivemos uma performance próxima entre todos. RestSharp sendo o mais rápido com o HttpClient sendo o mais lento.

Put Consumo Memória

Porém, quando analisamos o consumo de memória a vantagem do RestSharp vai por água abaixo, visto que ele tem um consumo de memória extremamente alto comparado com o Refit e o HttpClient que ficam praticamente empatados em primeiro.

Get em milissegundos

Aqui foi realizado um Get sem nenhum filtro ou parâmetro retornando um total de 200 resultados.

Mais uma vez tivemos todos as libs com performance extremamente próxima tendo o HttpClient com uma ligeira vantagem.

Get Consumo Memória

Novamente quanto o assunto é consumo de memória todo o nivelamento no quesito velocidade vai por água abaixo para o RestSharp, novamente tendo o pior consumo de memória.

Refit mais uma vez mostra um consumo muito baixo de memória, comparado com os demais.

Conclusão:

Após os testes temos um resultado extremamente positivo para o Refit. Apresentando velocidades equivalentes ou até mais rápidas que os demais, fora o quesito consumo de memória onde ele sempre esteve entre os melhores.

O RestSharp tem um sério problema no consumo de memória, visto que em todos os testes seu consumo de memória foi discrepante comparado aos outros.

Claro que mais itens devem ser levados em consideração quando formos escolher qual deles utilizar, mas dar uma chance para o Refit parece ser uma ótima ideia.

Link do repositório com o projeto utilizado: clique aqui.

Top comments (0)