Refiz os testes e consegui resultados um pouco melhores, mas ainda piores que o ASP.NET:
Method | Mean | Error | StdDev |
---|---|---|---|
AspNetMinimal | 101.9 us | 1.13 us | 0.95 us |
SiskDotNet | 108.4 us | 1.50 us | 1.40 us |
SiskBFlat | 109.9 us | 1.58 us | 1.48 us |
Também inclui um teste com o Sisk compilado com bflat. Achei que se sairia melhor porque não tinha toda aquela VM do .NET, mas acabou sendo pior.
Para melhorar os testes, eu desabilitei alguns switches de configuração do Sisk:
config.AccessLogsStream = null; // o access logging pesa muito o processamento
config.Flags.NormalizeHeadersEncodings = false;
config.Flags.SendSiskHeader = false;
config.IncludeRequestIdHeader = false;
E também movi a resposta para um objeto, para não ter que computar o ByteArrayContent
toda requisição. Não sei se é justo fazer isso, não sei como é no ASP.NET.
Acho que a diferença restantes dos 6,5 us é parte da implementação do soquete HTTP em si. Todas requisições foram feitas em HTTP plano, sem TLS. Aliás, o benchmark tá aqui se você quiser mais detalhes.
Fiquei feliz em ter aproximado o valor, fica mais competitivo.