gpt4 book ai didi

c# - AsParallel 究竟是如何工作的?

转载 作者:太空狗 更新时间:2023-10-29 20:44:22 27 4
gpt4 key购买 nike

下面的测试程序好像不会做深蹲。这是因为我正在测试一个小列表吗?

static void Main(string[] args)
{
List<int> list = 0.UpTo(4);

Test(list.AsParallel());
Test(list);
}

private static void Test(IEnumerable<int> input)
{
var timer = new Stopwatch();
timer.Start();
var size = input.Count();
if (input.Where(IsOdd).Count() != size / 2)
throw new Exception("Failed to count the odds");

timer.Stop();
Console.WriteLine("Tested " + size + " numbers in " + timer.Elapsed.TotalSeconds + " seconds");
}

private static bool IsOdd(int n)
{
Thread.Sleep(1000);
return n%2 == 1;
}

两个版本都需要 4 秒才能运行。

最佳答案

任务并行库关心序列的静态类型。应该是IParallelEnumerable<T>由 TPL 处理的操作。您正在将集合转换回 IEnumerable<T>当你调用Test .因此,编译器将解析 .Where调用序列 System.Linq.Enumerable.Where扩展方法,而不是 TPL 提供的并行版本。

关于c# - AsParallel 究竟是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1812615/

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