我想并行运行一些事情,但它所做的只是减慢一切。这是一个示例(不是我的实际问题,但它模拟了它)。
如果我只运行一次迭代,则运行时间约为 2 秒,但当我尝试突然运行 10 个并行实例时,每个实例的运行时间约为 20 秒。
await RunParallel();
private async Task RunParallel()
{
var tasks = Enumerable.Range(0, 1)
.AsParallel()
.Select(async x =>
{
AppLogger.WriteInfo($"task {x}");
await DoSomeWork();
})
.ToList();
await Task.WhenAll(tasks);
}
private Task DoSomeWork()
{
return Task.Run(() =>
{
Stopwatch workWatch = Stopwatch.StartNew();
string input = "Just some random string to hash it";
for (int i = 0; i < 1000000; i++)
{
using (SHA1 sha1 = SHA1.Create())
{
var hash = sha1.ComputeHash(Encoding.UTF8.GetBytes(input));
var sb = new …Run Code Online (Sandbox Code Playgroud)