GNU/LinuxのJavaと比較したMonoのパフォーマンスベンチマークはありますか?
Monoのパフォーマンスをテストしたことがありますか?
これに関するミゲルからの興味深い投稿があります。
「Alvaroは、Language Shootout Benchmark Monoは、Javaの10位と比較して18位になっていると指摘しています。
Sun独自のJavaエディション(まだどこにも見つからないため、オープンソースエディションではありません)はMonoよりも高速ですが、私たちがはるかに遅れていることに驚きました。 Java6とMonoの比較を見ました。」
(出典: tirania.org )
この銃撃戦の最新バージョンは ここ で見つけることができます。
一言で言えば、Javaと比較して、Monoははるかに少ないメモリを使用し、実行速度が少し遅くなります。
物事の見通しを保つために、それらは両方とも物事の壮大な計画でほぼ同じ速度で実行されます。どちらも、Ruby、LUA、Python、PHP、Perlなどの言語よりも桁違いに高速にこれらのテストを実行します。これらは両方ともPascal、OCaml、Haskell、LISPと同じ球場にあり、CやC++の約半分の速度になっています。詳細については、 ここ をクリックしてください。
ここでの答えはJavaとMonoC#です。MonoとJVMはどちらもさまざまな言語の対象となる環境であり、言語の選択が重要です。たとえば、比較すると、 JVMのClojureを使用したMonoのF#では、まったく異なる結果が得られ、突然「Mono」は「 faster "」になります。
これらの比較は面白くて有益ですが、一粒の塩でそれらを取る必要があります。まず、そうする人もいますが、JavaとC#コードを書くほとんどの人は、タイトなループで数値アルゴリズムしか実行していません。次に、これらの言語の一部では、テストされたアルゴリズムがターゲット言語ではなくCで記述されたライブラリ。最後に、他のベンチマーク(および実装)では異なる結果が得られる可能性があります。
それでも、GoはRubyよりもはるかに高速であり、C++はGoよりも高速であり、JavaとC#はどちらも生産性が高いことを考えるとかなり合理的に機能します(IMHO)。
私のベンチマーク(複雑な数学的問題とメモリ操作(生の文字列を使用)を使用):
MonoDevelop Windows(.net 3.5を使用してコンソールで実行):Realizandocálculosem1.000.000itens ...535Realizandooperaçõescomstringslongas...2.038Realizandocálculosem1.000.000itens...530Realizandooperaçõescomstringslongas.. .1.962Realizandocálculosem1.000.000itens...530Realizandooperaçõescomstringslongas... 1.963
Windowsでのmono.exeの使用:Realizandocálculosem1.000.000itens ...6.875Realizandooperaçõescomstringslongas...6.206Realizandocálculosem1.000.000itens...6.840Realizandooperaçõescomstringslongas...6.114Realizandocálculosem 1.000.000 itens ...6.857Realizandooperaçõescomstringslongas... 6.116
Linux Ubuntuでのmonoの使用:Realizandocálculosem1.000.000itens ...5,934Realizandooperaçõescomstringslongas...6,915Realizandocálculosem1.000.000itens ...6,034Realizandooperaçõescomstringslongas...7,489Realizandocálculosem1.000 .000 itens ...5,740Realizandooperaçõescomstringslongas... 6,731
同じソースコードですが、Visual Studio 2008の場合:Realizandocálculosem1.000.000itens ...588Realizandooperaçõescomstringslongas...1.289Realizandocálculosem1.000.000itens...566Realizandooperaçõescomstringslongas... 1.320 Realizandocálculosem1.000.000itens...702Realizandooperaçõescomstringslongas... 1.393
VS 2008はNGEN(ネイティブ実行可能ファイル)でexeを生成しました:Realizandocálculosem1.000.000itens ...567Realizandooperaçõescomstringslongas...1.255Realizandocálculosem1.000.000itens...563Realizandooperaçõescomstringslongas.. .. 1.269Realizandocálculosem1.000.000itens...562Realizandooperaçõescomstringslongas... 1.263
これらのテストでは、monoは.net3.5よりも10倍遅いSP 1 =(
I OCaml、LLVM、.NET、Javaを含む他のさまざまなVMに対してMono 2.2のベンチマーク :
要約すると、Mono2.2はMono2.0よりも優れていますが、それでも通常はlot他のほとんどすべてよりも低速です。
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 /リシャーパー中毒者ですか、それともJava IDE?新しい言語の学習に費やす時間またはIDEは、より良い文章を書くために費やされることはありません。より最適化されたコード。