【发布时间】:2014-09-11 01:39:32
【问题描述】:
我有一段代码需要运行大约 1000 个实例。我正在使用任务并行库启动 1k 个任务,然后等待它们完成 Await Task.WhenAll。它是一个相当大的纯同步方法集合,涉及许多 Web 请求和套接字连接。
在性能方面,将每个操作(HttpWebRequest.GetResponse、Socket.Connect 等)更改为带有等待(GetResponseAsync、ConnectAsync 等)的异步方法有什么影响?
我想知道由于每个方法调用都是一个任务,它是否能够更好地在多个内核上共享 CPU 负载,尽管内存开销更大。这是正确的还是我的假设是错误的?
【问题讨论】:
-
尝试并测量... 此外,如果您没有看到 CPU 负载明显低于 100%,那么您不太可能从重写中获得任何好处(假设您的代码不是那种需要有办法轻松启动并等待无限数量的请求)。
标签: c# .net vb.net asynchronous task-parallel-library