2011-03-02 51 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核心數量,並且立刻從中取出!