单声道上的任务并行库实现?

Mono是否实现了Task Parallel库? 如果是这样,.NET和mono之间的性能如何比较。

这是在Mono 2.6版中实现的。

从发行说明:

ParallelFx

此版本包括ParallelFx框架的一些组件,这些组件是作为Google Summer Of Code 2008和2009的一部分开发的。更确切地说,它包含任务并行库和数据结构协调。

使用ParallelFx,您可以轻松开发能够自动利用当今多核机器并行潜力的软件。 为此,现在可以使用一些新的构造,如期货,并行循环或并发集合。

要使用此代码,您必须在配置阶段使用–with-profile4 = yes开关手动启用.NET 4配置文件。

根据我自己的经验,我在C#中有一个高度并行的程序,用于基因序列数据的学习和分类,这使得任务并行库function的使用非常繁重,例如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核心数量,然后它突然出现了!