- ベストアンサー
言語別(C/C++,Java等)の計算速度の違いが知りたいです。
言語別(C/C++,Java等)の計算速度の違いが知りたいです。 巡回セールスマン問題を解く(よさそうな解を見つける)プログラムを書くことになったのですが、言語が自由です。 オブジェクト指向言語で組もうと思っているんですが、C++、C#、Javaなどの言語のうち、計算速度が早いのはどれでしょうか? 順番も分かれば、教えてほしいです。 また、もしC言語で組めれば、やっぱりオブジェクト指向言語よりも早いのでしょうか? 大体でもよいので、分かる方いたら教えてください。 よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
C/C++だとネイティブコードになるので、バイトコードインタプリタで実行するJava/C#より速いという俗説はありますが、純粋な数値計算だとC++とJavaでほとんど違わないという実験結果を聞いたことがあります。 オブジェクトの動的生成・破棄が多いとGCを持つJava/C#ではオーバーヘッドがあるために遅くなりますが、数値計算主体で書き方が悪くなければ大差はないので書きやすい言語で書くのが正解でしょう。 # ベクタ演算命令を活用できればC/C++(インラインアセンブラあり)が格段に速くなるかもしれません
その他の回答 (3)
- Interest
- ベストアンサー率31% (207/659)
具体的な比較結果があります。 http://shootout.alioth.debian.org/ > もしC言語で組めれば、やっぱりオブジェクト指向言語よりも早いのでしょうか? それは何とも言えません。 Cで組む場合はなんでも自分で書かなきゃいけないので、下手な人が書くと無駄な処理ばかりで遅くなる虞が大。熟練した人が処理速度に徹底的にこだわって書いたプログラムなら、C++より無駄の無いプログラムになるかもしれません。 C++ならBoost、C#なら .NET、JavaならJDKに膨大なライブラリがあるので、自分で作るより「早い(!=速い)」のは間違いないでしょう。
お礼
回答、ありがとうございます。
- jacta
- ベストアンサー率26% (845/3158)
期待している回答かどうかはわかりませんが、最も得意な言語で実装するのが最も高速になると思います。 CやC++を使っても、それらの言語が不得意でJavaやC#のようなコードしか書けないのであれば、バグを作り込むだけですし、バグがなかったとしても効率のよいコーディングができる可能性はほとんどありません。
お礼
回答、ありがとうございます。
- Tacosan
- ベストアンサー率23% (3656/15482)
C# や Java とは異なり C++ はネイティブだから (厳密にいえば Java のネイティブコンパイラがないとはいわないが), 「同じアルゴリズムを実装する」という前提であれば C++ が速いかなぁ. C# と Java のどっちが速いかは知らん. C で書く方が速いコードになるかもしれんけど, C++ とは大差ないかもしれない. この辺は「どのように実装するか」など, 細かいところにも依存するはず.
お礼
参考になりました! ありがとうございました。
お礼
詳細な回答、ありがとうございました。 参考になりました。