2011-03-02 61 views
8

单声道是否实现任务并行库?如果是这样,.NET和mono之间的性能如何比较。任务单声道并行库实现?

+1

部分回答:是的单声道确实执行任务并行库:http://www.mono-project.com/Release_Notes_Mono_2.6#ParallelFx – 2011-03-02 17:07:53

回答

9

这是在单声道版本2.6中实现的。

From the release notes:

ParallelFx

本新闻稿包含2008年被2009 &更精确地开发为代码,谷歌夏季的一部分ParallelFx框架的一些组件,它包含了任务并行库和数据协调结构。

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

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

4

在我自己的经验,我已经在C#中的学习和基因序列数据的分类的高度并行的程序,使得任务并行库的功能,如Parallel.ForEach,的Parallel.For,任务非常繁重的使用.Factory.StartNew()以及来自Collections.Concurrent命名空间(Blocking Collections,Concurrent Dictionaries,Concurrent Bags等)的许多结构。简而言之,我的应用程序在使用mono的Linux上的性能要慢很多倍。我仍然试图弄清楚这一点。我可以在具有类似性能的窗口中从单声道控制台运行它。

我已经尝试过使用mono的sgen垃圾回收器无济于事。我的应用程序在运行mono的Linux服务器上的性能仍然明显较慢。

学习8258个序列: 0:17与1:59米:在Linux SS

分类921的序列: 2.29秒与11:05毫米:在Linux

SS

请参阅下面的屏幕截图。

enter image description here
enter image description here

+1

杰克,你正在使用什么版本的单声道?你有没有看到这种表现的改善? – Boots 2015-08-26 19:15:55

+0

我正在使用Mono 3.2.3。这个项目我一直无法得到解决,完全放弃了Mono。我构建了一个带有双液冷六角处理器和128GB RAM的Windows机箱。然而,如果我能在Linux上获得这样的表现,我将拥有大量的大学资源。Linux上的Mono版本可能稍微老一点,但它至少必须支持.NET 4.5。否则,我的程序不会执行。 – 2015-08-27 03:02:08

0

你有没有尝试改变分/ maxthreads?

System.Threading.ThreadPool.SetMaxThreads(mWorker, mWorker); 
System.Threading.ThreadPool.SetMinThreads(10, 10); 

正在操作方式超越我,但是我发现没有什么都没有完成。所以我把它设置为5 * cpu核心数量,并且立刻从中取出!