[英]Task Parallel library implementation on mono?
Mono是否实现了Task Parallel库? 如果是这样,.NET和mono之间的性能如何比较。
这是在Mono 2.6版中实现的。
ParallelFx
此版本包括ParallelFx框架的一些组件,这些组件是作为Google Summer Of Code 2008和2009的一部分开发的。更准确地说,它包含任务并行库和数据结构协调。
使用ParallelFx,您可以轻松开发能够自动利用当今多核机器并行潜力的软件。 为此,现在可以使用一些新的构造,如期货,并行循环或并发集合。
要使用此代码,您必须在配置阶段使用--with-profile4 = yes开关手动启用.NET 4配置文件。
在我自己的经验,我已经在C#中的学习和基因序列数据的分类,这使得的任务并行库的功能,如Parallel.ForEach,的Parallel.For,Task.Factory.StartNew非常沉重的使用高度并行程序()来自Collections.Concurrent命名空间的许多结构(阻塞集合,并发字典,并发包等)。 简而言之,我的应用程序在使用mono的Linux上的性能要慢很多倍。 我仍然想弄明白这一点。 我可以在具有类似性能的Windows中从单声道控制台运行它。
我已经尝试使用mono的sgen垃圾收集器无济于事。 我的应用程序在运行单声道的Linux服务器上的性能仍然显着降低。
学习8,258个序列: 0 :17 vs. 1:59 m:Linux上的ss
对921序列进行分类: 2.29秒vs. 11:05 mm:Linux上的ss
请参阅下面的屏幕截图
你有没有尝试改变min / maxthreads?
System.Threading.ThreadPool.SetMaxThreads(mWorker, mWorker);
System.Threading.ThreadPool.SetMinThreads(10, 10);
你的操作超越了我,但我发现没有任何事情要做。 所以我把它设置为5 *个cpu核心数量,然后它突然出现了!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.