web-dev-qa-db-ja.com

Java vs C#:実行速度を比較する調査はありますか?

ベンチマークとベンチマークの比較に関連する明らかな警告のすべてを取り除いて、言及された2つの言語の平均実行速度を比較する研究(十分に文書化された公平なテストの配列)はありますか?ありがとう

46
pistacchio

私が知っている最良の比較は The Computer Language Benchmarks Game です。

多数のプログラミング言語で(現在)10のベンチマークの速度、メモリ使用量、ソースコードサイズを比較します。ベンチマークの実装はユーザーが提出し、継続的な改善があるため、順位は多少変動します。

現在の比較はopenjdkとC#.NET Coreです。

現在は近いですが、.NET Coreはほとんどのベンチマークでわずかに高速です

23
Rasmus Faber

これは、件名に関する 素敵な最近の研究 です。

C、C#、Javaでの数値パフォーマンス

ピーター・セストフト([email protected]

デンマークコペンハーゲン大学

2010-02-19のバージョン0.9.1

要約:C、C#、およびJava)の数値パフォーマンスを3つの小さなケースで比較します。

...

10
Ohad Schneider

どちらの言語もパフォーマンスの点で進化しています。少なくとも2013年には、Microsoft自身のJoe Duffy blogged

コードピッチとスタック割り当てを使用するHotSpotのようなVMでの優れた作業のおかげで、JavaはC#より[パフォーマンスがC++に近い]です。

6

これはフレームウォーを招くかもしれませんが、ちょっと、それは私の意見です...
まず第一に、サイトの実行速度が遅すぎる場合は、より優れたハードウェアが必要になります。またはハードウェアを増やし、サイトに負荷分散を追加します。あなたがGoogleなら、サイト自体が古い言語で開発されていても、何千ものマシンを備えた巨大なサーバーファームで、高速のパフォーマンスを提供できるようになります。
ほとんどの言語は、ハードウェアを最大限に活用するように最適化されており、この特定の環境で特定の設定を行うことで、他の言語よりも優れた性能を発揮します。言語をさらに最適化するための何千もの手法があるため、言語の比較はあまり意味がありません。さらに、そもそもパフォーマンスをどのように測定しますか?
実行速度を見ているとしましょう。言語Xは、言語Yの2倍の速度でタスクを実行する場合があります。ただし、言語Yは、複数のスレッドを実行するために最適化されており、同じ時間で言語Xの10倍のユーザーにサービスを提供できます。これとYを組み合わせると、クライアント/サーバー環境ではるかに高速になります。
しかし、Xが非常に気に入ったオペレーティングシステムを備えた最適化されたシステムにXをインストールします。追加のハードウェア、数十億バイトのメモリとディスクスペース、そして数十個のCPUとXが、Yを再び打ち負かします。
では、言語の実行速度を知ることの価値は何でしょうか。または言語の比較ですか?レポートを作成した人が偏っていなかったことをどうやって知るのですか?すべての言語に最適な設定が使用されていることをどのように確認しますか?彼らはテストするのに最も最適なコードを書いたのですか?とにかく、どうやって最終結果を比較しますか?ユーザーあたりの実行時間は?または合計実行時間?
言語XおよびYに戻ります。Xは2秒でタスクを実行しますが、同時にサポートするスレッドは10のみなので、10ユーザーです。 Yには6秒必要ですが、同時に最大50のスレッドを処理します。 Xはユーザーごとに高速になります。 2秒で、Xは10人のユーザーを処理しました。 6秒で、Xは30人のユーザーを処理しました。しかし、Yはその時までに50人のユーザーを処理していました。したがって、ユーザー数が多い場合はYがXよりもパフォーマンスが高く、ユーザー数が少ない場合はXがYよりもパフォーマンスが高くなります。 (またはスレッド。)これについて言及しているレポートを見るのは興味深いでしょう。

4
Wim ten Brink