.Net Core Web API 的执行速度比 .Net Framework 慢 |休息好要求

问题描述 投票:0回答:1

我有一台在我的计算机上本地运行的服务器,以及两个不同的环境/项目,.Net8(或任何其他 .Net core 版本)和 .Net Framework 4.8,使用 Rest Sharp 版本 105.2.3.0 在具有相同参数的服务器上执行发布请求 但两种情况下的响应时间不同。我也调试了外部服务器,它在两种情况下同时响应。但问题出在 .Net Core 项目上。需要更多时间。

两个环境/项目上的代码:

var client = new RestClient("http://localhost:5005/predict");
var request = new RestRequest(Method.POST);
var imageToScore = "d:imagePath.jpg";
request.AddFile("image", imageToScore);


Stopwatch watch = new Stopwatch();
watch.Start();
IRestResponse response = client.Execute(request);
watch.Stop();
string msg = "Request response time " + (watch.ElapsedMilliseconds) + "milli seconds. ";
Console.WriteLine(msg);

.Net Framework 4.8 输出窗口:

Request response time 348milli seconds. 
Request response time 301milli seconds.  

.Net Core输出窗口:

Request response time 2387milli seconds. 
Request response time 2317milli seconds

存在约 2000ms 的明显差异。 .Net Core 配置中是否缺少某些内容?因为我已经创建了两个新项目,并且刚刚在两个项目中安装了 RestSharp,并且没有更改这两个项目的任何设置或配置

我也尝试过使用HttpClient,但响应时间是相同的。

asp.net .net .net-core asp.net-web-api restsharp
1个回答
0
投票

我不确定这是否是真正的原因,因为没有足够的数据,但我在 .NET Core 3.1 周围遇到了一些类似的问题。 Kestrel 不支持同步读/写,如果文件数据足够大,它会首先将文件缓冲到硬盘驱动器,以便稍后能够异步读取它(您可以使用探查器查看这些分配),这会极大地减慢操作速度。解决方案是采用异步并切换到您应该首先使用的 ExecuteAsync(),因为网络通信本质上是异步操作。

© www.soinside.com 2019 - 2024. All rights reserved.