gpt4 book ai didi

c# - C#多线程的速度测试

转载 作者:行者123 更新时间:2023-12-03 13:14:13 25 4
gpt4 key购买 nike

我想针对C#进行测试(我想将其运行速度与另一种语言进行比较)。
我想做的是在一个链中创建100,000个线程,每个线程都等待它之前的值,当它获得值时加1并将该值传递给下一个线程。
想法是看它能多快地创建这些线程并加起来多达100,000个。
我不知道如何编写该代码。我可以做一些事情,例如线程和计时,但是我不确定如何将它们串在一起。

编辑
在线程方面,我似乎也了解了我在知识方面的不足。因此,让我们假设线程池(或其他低级方法)具有可比性,有人可以向我展示它的示例吗?

最佳答案

该场景正是TPL旨在实现的,特别是C#5的ContinueWithawait。请注意,异步!=线程化(尽管它们是相关的),但重点是您实际上是在尝试执行100k个任务,而不是100k个线程。这两个概念是不同的。 TPL是执行此操作的正确方法。始终使用适当的工具进行作业。

如果您想要的话,我会很高兴地举一个TPL示例...不太远的地方:

var root = new Task<int>(() => 0);
var end = root;
for(int i = 0 ; i < 100000 ; i++)
{
end = end.ContinueWith(last => last.Result + 1);
}
var watch = Stopwatch.StartNew();
root.Start();
end.Wait();
watch.Stop();
Console.WriteLine("{0} in {1}ms", end.Result, watch.ElapsedMilliseconds);

关于c# - C#多线程的速度测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6128868/

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