簡體   English   中英

單聲道表現

[英]Mono performance

與GNU / Linux中的Java相比,Mono是否有任何性能基准測試?

你有沒有測試過Mono的性能?

這個槍戰的最新版本可以在這里找到。

簡而言之,與Java相比,Mono使用更少的內存並且運行速度稍慢。

為了保持透視,它們在宏觀方案中的運行速度大致相同。 他們運行這些測試的速度比Ruby,LUA,Python,PHP和Perl等語言快幾個數量級。 它們與Pascal,OCaml,Haskell和LISP處於相同的球場,這使得它們的速度大約是C和C ++的一半。 點擊此處了解更多詳情。

為了挑剔,我們應該清楚我們的答案在這里比較Java和Mono C#。 Mono和JVM都是各種語言的目標環境,語言選擇也很重要。 例如,如果我們將Mono上的F#與JVM上的Clojure進行比較,我們會得到完全不同的結果,突然“Mono”變得“ 更快 ”。

雖然這些比較很有趣並且信息豐富,但你必須帶着它們。 首先,盡管有些人這樣做,但大多數編寫Java和C#代碼的人在緊密循環中都沒有運行數值算法。 其次,在某些語言中,經過測試的算法可能只是調用用C語言編寫而不是用目標語言編寫的庫。 最后,其他基准(和實現)可能會產生不同的結果。

盡管如此,推斷Go比Ruby快得多是合理的,C ++比Go快,而且Java和C#的表現非常合理,因為它們的效率如何(恕我直言)。

米格爾有一篇有趣的帖子。

“阿爾瓦羅指出,在語言槍戰基准測試中,Mono排在第18位,而Java排在第10位。

我們知道Sun的專有Java版本(不是開源版本,因為那個版本尚無法找到)比Mono更快,但我很驚訝我們已經落后了。 所以我查看了Java6和Mono之間的比較。“

比較 -  Java和Mono
(來源: tirania.org

看這里的細節

amazedsaint> 米格爾有一篇有趣的帖子。

那張圖表已經過時了!

這是當前的Mono C#4.0比較

我的基准測試(使用復雜的數學問題和內存操作(使用原始字符串)):

MonoDevelop Windows(使用.net 3.5在控制台上運行):Realizandocálculosem1.000.000 itens ... 535Realizandopenopeçõescomstrings longas ... 2.038Realizandocálculosem1.000.000 itens ... 530Realizandogoperaçõescomstrings longas .. .1.962Realizandocálculosem1.000.000 itens ... 530Realizandopenopeçõescomstrings longas ... 1.963

在Windows上使用mono.exe:Realizandocálculosem1.000.000 itens ... 6.875Realizandopenopeçõescomstrings longas ... 6.206Realizandocálculosem1.000.000 itens ... 6.840Realizandogoperaçõescomstrings longas ... 6.114Realizandocálculosem 1.000.000 itens ... 6.857Realizandopehopeçõescomstrings longas ... 6.116

在Linux上使用mono Ubuntu:Realizandocálculosem1.000.000 itens ... 5,934Realizandogoperaçõescomstrings longas ... 6,915Realizandocálculosem1.000.000 itens ... 6,034Realizandopenopeçõescomstrings longas ... 7,489Realizandocálculosem1.000 .000 itens ... 5,740Realizandopehopeçõescomstrings longas ... 6,731

相同的源代碼,但在Visual Studio 2008上:Realizandocálculosem1.000.000 itens ... 588Realizandogoperaçõescomstrings longas ... 1.289Realizandocálculosem1.000.000 itens ... 566Realizandogoperaçõescomstrings longas ... 1.320 Realizandocálculosem1.000.000 itens ... 702Realizandopehopeçõescomstrings longas ... 1.393

VS 2008使用NGEN生成exe(本機可執行文件):Realizandocálculosem1.000.000 itens ... 567Realizandopehopeçõescomstrings longas ... 1.255Realizandocálculosem1.000.000 itens ... 563Realizandogoperaçõescomstrings longas ... 1.269Realizandocálculosem1.000.000 itens ... 562Realizandopehopeçõescomstrings longas ... 1.263

在那些測試中,mono比.net 3.5 SP 1慢10倍(=

C ++,C#(Mono),C和Vala: http//jpaflacerda.wordpress.com/2011/11/08/vala-benchmarking/

許多語言: http//attractivechaos.github.com/plb/

結論:Mono進化很多,但與其他語言相比,它仍然很慢。 我對Vala感興趣,它與C#的語法幾乎相同但在某些情況下比普通的C更快。

大多數基准都是基於緊密循環的大量計算。 時間在循環之前開始計數並且在之后停止。 如果您的應用程序正在進行繁重的數據處理,那么請避免使用C#和Java,只需使用C / C ++即可。

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

您最好先了解底層框架的效率,執行代碼之前的初始化階段有多快,實現非阻塞I / O等高效技術的容易程度,內存釋放的好壞以及之后的流程再循環代碼執行。 部署代碼是多么容易,使其擴展...

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM