C#多线程的速度测试

Jam*_*ght 0 c# multithreading timer

我想对C#进行测试(我想将它的运行速度与另一种语言进行比较).
我想要做的是在链中创建100,000个线程,让每个线程在它之前等待来自线程的值,当它获得值add 1并将值传递给下一个线程时.我们的想法是看它创建这些线程的速度有多快,最多可达100,000.
我不知道如何编写该代码.我可以像线程和计时一样做它的一部分,但我不确定如何将它们串在一起.

编辑
在线程方面,我似乎也可以了解我的知识缺陷.因此,让我们假设线程池(或其他一些低级方法)具有可比性,任何人都可以向我展示这样的例子吗?

Mar*_*ell 7

这个场景正是TPL的设计来实现的,特别是ContinueWith,或await在C#5说法.请注意,async!= threading(尽管它们是相关的),但关键是你实际上是在尝试执行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);
Run Code Online (Sandbox Code Playgroud)

  • @James TPL示例补充; 肯定比杀死机器更好 (3认同)
  • 为大家做的,马克.我知道你想要 ;) (2认同)