2008-12-19 128 views
23

與GNU/Linux中的Java相比,Mono是否有任何性能基準?單聲道性能

你有沒有測試過莫諾的表現?

+3

有人願意重新訪問這個,現在C#4.0出來了嗎? – user482594 2011-10-29 00:28:23

+0

@ user482594 - 我在我的答案中提供了一個最新的鏈接,該鏈接應該保持最新狀態:http://stackoverflow.com/a/9138207/332026 – Justin 2012-02-04 03:40:36

+1

@ user482594 - 基準遊戲不會顯示Mono 2.10.9,提供C#4.0 - 但這並不意味着C#程序已被重新編寫爲使用C#4.0功能。 – igouy 2012-09-28 19:35:05

回答

12

從米格爾這裏有一個有趣的帖子。

「阿爾瓦羅指出,在 語言槍戰基準單在第18位相比,Java的第10 所至 。

我們知道,Sun的專有的Java 版(不開源之一, 那個還沒有找到) 比單聲道快,但我是 感到驚訝,我們遠遠落在了後面 所以我看了看Java6和Mono的 之間的比較。

Comparison - Java and Mono http://tirania.org/pictures/javavsmono.png

See Details Here

+5

該圖表過時了!這裏有4個當前的基準遊戲比較之一 - http://benchmarksgame.alioth.debian.org/u32/csharp.php – igouy 2013-05-17 14:08:01

2

我的基準測試(使用複雜的數學問題和存儲器操作(與原始字符串)):

的MonoDevelop的Windows(使用.net 3.5控制檯上運行): RealizandocálculosEM 1.000.000 itens ... 535 RealizandooperaçõesCOM串longas ... 2.038 RealizandocálculosEM 1.000.000 itens ... 530個 RealizandooperaçõesCOM串longas ... 1.962 RealizandocálculosEM 1.000.000 itens ... 530個 RealizandooperaçõesCOM串longas。 .. 1.963

在Windows上使用mono.exe: RealizandocálculosEM 1.000.000 itens ... 6.875 RealizandooperaçõesCOM串longas ... 6.206 RealizandocálculosEM 1.000.000 itens ... 6.840 RealizandooperaçõesCOM串longas .. 。6.114 RealizandocálculosEM 1.000.000 itens ... 6.857 RealizandooperaçõesCOM串longas ... 6.116

在Linux操作系統Ubuntu使用單: RealizandocálculosEM 1.000.000 itens ... 5,934 RealizandooperaçõesCOM字符串longas ... 6,915 Realizandocálculosem 1.000。000項目...... 6034個 長字符串執行操作... 7489項 進行計算百萬個... 5,740 長字符串執行操作... 6731

相同的源代碼,但在Visual Studio中2008年: 進行計算,百萬個...... 588個 長字符串執行操作... 1289項 執行計算百萬個...... 566個 長字符串執行操作... 1320個 執行計算百萬個...... 702個 長字符串執行操作... 1393

VS產生與NGEN(本地可執行文件)EXE: 進行計算,百萬個...... 567個 長字符串執行操作... 1255項 執行計算百萬個...... 563個 執行操作與長串 ... 1269項執行計算百萬項562 ...通過用長串

...在那些測試1263

執行操作,單是慢10倍的.NET 3.5 SP 1 =(

28

這個槍戰的最新版本可以發現here

概括地說,相比於Java,單佔用更少的內存,運行速度稍慢。

要保持角度來看問題,無論它們運行有關的事物的宏偉計劃相同的速度。他們這兩個測試不是像紅寶石,LUA,Python和PHP和Perl語言運行快幾個數量級。無論他們是在球的公園一樣帕斯卡爾,OCAML,哈斯克爾,Lisp和大約一半的人這使得快,C和C++。 here點擊瞭解更多詳情。

雞蛋裏挑骨頭,cornichons明確闕在這裏我們的答案比較的Java和Mono C#。無論是單聲道和JVM環境中通過不同的語言和語言問題的選擇目標。舉例來說,如果我們單上使用Clojure在JVM上比較F#我們得到完全不同的結果,突然「單聲道」是「faster」。

雖然這些比較有趣和翔實的,你必須把它們用一粒鹽。首先,儘管一些人,大多數人寫Java和C#代碼不是在緊密循環運行什麼,但數值算法。其次,在一些語言,測試的算法可能只是調用到闕是用C語言編寫,而不是在目標語言的所有庫。最後,其他基準(和實現)可能會產生不同的結果。

不過,這是合理的推斷,走的是比Ruby更快,C++是不是走得更快,而Java和C#漂亮的執行合理的假設它們是如何生產(恕我直言)

1

大部分的基準是基於緊密循環的重計算。時間剛剛開始循環之前計數,只是後停止。如果您的應用程序正在執行大量數據處理,那麼避免使用C#和Java,只需使用C/C++即可。

它更可能是您的應用程序將服務器端。它將不得不接受查詢,獲取數據並將其發回。在這種情況下,生成的代碼的原始速度與其他參數相比無關緊要。

你最好看看底層框架的效率如何,初始化階段在執行代碼之前有多快,實現高效技術(如非阻塞I/O),內存釋放性能並在代碼執行後處理回收。部署代碼有多容易,使其擴大規模......

人類參數比所有這些都重要。寫得不好的Java比C#慢,反之亦然。所以你必須檢查你的開發人員。他們掌握了多大的語言,他們喜歡更好的工具嗎?他們是VS/resharper上癮者還是可以使用Java IDE?花在學習新語言或IDE上的時間不會花在編寫更好,更優化的代碼上。