项目作者: lsilvadev

项目描述 :
Benchmark gRPC x REST no .NET Core
高级语言: C#
项目地址: git://github.com/lsilvadev/gRPCvsREST.git
创建时间: 2020-04-12T21:14:04Z
项目社区:https://github.com/lsilvadev/gRPCvsREST

开源协议:

下载


Benchmark gRPC x REST no .NET Core

Este repositório contém o benchmark que possibilita a comparação entre o desempenho em relação ao tempo de execução do gRPC (HTTP/2 com Protobuf) e do REST (HTTP com JSON).

Para geração dos resultados foi utilizada a library open-source BenchmarkDotNet.

Para executar os projetos, em um prompt de comando, seguir as instruções abaixo.

API REST

cd gRPCvsREST\RestAPI

  1. dotnet run -c Release

Serviço gRPC

cd gRPCvsREST\GrpcService

  1. dotnet run -c Release

Benchmark (gRPC x REST)

cd gRPCvsREST\Client

  1. dotnet run -c Release

Resultado do Benchmark

  1. BenchmarkDotNet=v0.12.1, OS=macOS Catalina 10.15.2 (19C57) [Darwin 19.2.0]
  2. Intel Core i5-7267U CPU 3.10GHz (Kaby Lake), 1 CPU, 4 logical and 2 physical cores
  3. .NET Core SDK=3.0.101
  4. [Host] : .NET Core 3.0.1 (CoreCLR 4.700.19.51502, CoreFX 4.700.19.51609), X64 RyuJIT
  5. DefaultJob : .NET Core 3.0.1 (CoreCLR 4.700.19.51502, CoreFX 4.700.19.51609), X64 RyuJIT
Method IterationCount Mean Error StdDev Median
GrpcGetMessage 100 529.1 μs 33.57 μs 92.46 μs 488.9 μs
RestGetMessage 100 1,672.9 μs 134.39 μs 370.14 μs 1,578.7 μs
GrpcGetMessage 200 502.1 μs 19.31 μs 55.70 μs 485.5 μs
RestGetMessage 200 1,321.6 μs 43.17 μs 117.45 μs 1,274.3 μs

Tempo de execução: 00:05:33 (333.29 segundos)

Legenda

  • IterationCount: valor do parâmetro ‘IterationCount’
  • Mean: média aritmética de todas as medições
  • Error: metade do intervalo de confiança de 99,9%
  • StdDev: desvio padrão de todas as medições
  • Median: valor que separa a metade mais alta de todas as medições
  • 1 us: 1 microssegundo (0.000001 segundo)

Gráfico

O gRPC apresentou desempenho melhor que o REST, conforme evidenciado no benchmark. O gRPC foi projetado para HTTP/2, uma revisão importante do HTTP que fornece benefícios significativos de desempenho. As mensagens gRPC são serializadas usando o Protobuf, um formato de mensagem binária eficiente. Protobuf serializa muito rapidamente no servidor e cliente.