早上分享一篇,比较实际的文章,大家最关心的性能问题。
但是因为早上使用的是json输出,为了避免掺杂水分,下午特意写了新的,并完善了他。
在此之前,一直没有提供性能对比,参考图,今天它就来了,稍后附上测试代码。
废话不多说直接上图:
性能对比图
1000次
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHL5FFVOBzZE5keNpHW4Z0MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnLyEDO2IzNzUTM2ADOwAjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
10000次
100000次
以上注明,均在 Release 模式下测试。
设备信息:
CPU:Intel(R) Core(TM) i7-9700F CPU @ 3.00GHz
内存:16.0 GB 2666 MHz
测试代码
MvcApi
[ApiController]
[Route("Api1")]
public class HomeController : ControllerBase
{
public IActionResult GetApi()
{
return Ok("{\"msg\":\"MvcApi\"}");
}
}
MinApi
public class Home : MinApi
{
public IApiOut GetApi() => ApiOut.Write("{\"msg\":\"MinApi\"}");
}
测试代码
class Program
{
static void Main(string[] args)
{
Console.WriteLine("欢迎使用 Core HTTP 性能测试:");
A:
Console.WriteLine("请输入测试数量:");
HttpClient httpClient = new HttpClient() { BaseAddress = new Uri("http://127.0.0.1:500/") };
httpClient.GetStringAsync("").Wait();
int c = int.Parse(Console.ReadLine());
DateTime dateTime = DateTime.Now;
for (int i = 0; i < c; i++)
{
httpClient.GetStringAsync("api1").Wait();
}
double milliseconds1 = (DateTime.Now - dateTime).TotalMilliseconds;
Console.WriteLine($"MvcApi: 累计消耗:{milliseconds1} 毫秒,平均:{milliseconds1/c} ms/次 。");
DateTime dateTime1 = DateTime.Now;
for (int i = 0; i < c; i++)
{
httpClient.GetStringAsync("api/Home/GetApi").Wait();
}
double milliseconds2 = (DateTime.Now - dateTime1).TotalMilliseconds;
Console.WriteLine($"MinApi: 累计消耗:{milliseconds2} 毫秒,平均:{milliseconds2 / c} ms/次 。");
Console.WriteLine($"MinApi 优于 MvcApi:{milliseconds1 - milliseconds2} 毫秒。");
Console.WriteLine("是否继续测试:(1表示继续)");
int c1 = int.Parse(Console.ReadLine());
if (c1 == 1)
{
goto A;
}
httpClient.Dispose();
Console.ReadKey();
}
}
总结
作者还是那句话,喜欢用啥就用啥,作者也只是为了满足部分码农的好奇心,对其提供系统化的测试案例,还是要
根据需求进行,相应开发哦,感觉大家的支持,欢迎转载,如有疑问欢迎在下方评论区留言。