gpt4 book ai didi

c# - MVC Controller 上的异步与同步基准测试有问题

转载 作者:太空狗 更新时间:2023-10-29 17:58:12 28 4
gpt4 key购买 nike

我已经设置了这篇 MSDN 文章 Using Asynchronous Methods in ASP.NET MVC 4 中的示例并进行了一些基准测试以了解我的想法。

服务器配置:

  • Windows 7 专业版 (x64)
  • IIS 7.5
  • 英特尔酷睿 i7-2600S @ 2.80HGz
  • 8GB 内存
  • AppPool > 最大工作进程数:10

我设置了 2 个 Controller SyncAsync 并使用加载器工具进行了一些测试以进行基准测试。加载器工具在一分钟内仅发送 50-60 个持续请求。每个 Controller 调用同一个 web 服务 3 次。每个的代码如下:


同步:

public ActionResult Sync()
{
var g1 = GetGizmos("url1");
var g2 = GetGizmos("url2");
var g3 = GetGizmos("url3");
return Content("");
}

public object GetGizmos(string uri)
{
using (WebClient webClient = new WebClient())
{
return JsonConvert.DeserializeObject(
webClient.DownloadString(uri)
);
}
}

sync

异步:

public async Task<ActionResult> Async()
{
var g1 = GetGizmosAsync("url1");
var g2 = GetGizmosAsync("url2");
var g3 = GetGizmosAsync("url3");
var a1 = await g1;
var a2 = await g2;
var a3 = await g3;
return Content("");
}


public async Task<object> GetGizmosAsync(string uri)
{
using (HttpClient httpClient = new HttpClient())
{
var response = await httpClient.GetAsync(uri);
return (await response.Content.ReadAsAsync<object>());
}
}

async

第一个问题,有谁知道为什么 Async 花费的时间更长、运行更少并导致超时,而同步版本则不然?我认为为此使用 Async 会更快,没有超时等。看起来不对,我在这里做错了吗?可以做些什么来改进/修复它?

第二个问题,一般使用 WebRequests,有没有办法加快它的速度?我在我的 global.asax 中设置了以下内容,但仍然不确定用法是否正确:

System.Net.ServicePointManager.DefaultConnectionLimit = 1000;

此外,任何其他有助于加快执行这些类型的测试的应用程序的建议都将非常有帮助。

最佳答案

我认为线索就在你的比较中

webClient.DownloadString(uri)

var response = await httpClient.GetAsync(uri);
return (await response.Content.ReadAsAsync<object>());

也许你可以试试

webclient.DownloadStringAsync(uri)

你可以优化你的异步代码

await Task.Run(() => {
// just run your sync code here
var g1 = GetGizmos("url1");
var g2 = GetGizmos("url2");
var g3 = GetGizmos("url3");
return Content("");
});

这里有一个异步屈服点就够了。

有关异步的详细信息,请参阅此答案: Do you have to put Task.Run in a method to make it async?

关于c# - MVC Controller 上的异步与同步基准测试有问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26184247/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com