• ベストアンサー

JavaはC++より倍以上高速になる?

ジャバ・ホットスポット・テクノロジ についての解説を読んだところ、 「・・・バイトコードの軽さとマシンコードの高速性を活かせるため、C++ や JIT に比べ2、3倍高速に動作します。」 http://www.intel.co.jp/jp/business/japan/commentary/glossary/atoz-21.htm と書いてありました。 Java は可搬性などのために、実行速度はC,C++などより遅いことが多い、と聞いたのですが「JavaはC++より倍以上高速になる」というのは本当でしょうか? 例えば、Microsoft Word は C++ で作られていると思いますが、これをジャバ・ホットスポット・テクノロジを使って Java で作り直せば、今の Word よりも高速に動作するものでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • hpsk
  • ベストアンサー率40% (48/119)
回答No.3

私もちょっと気になったので、少しネットで調べてみました。 下に挙げたページによると、素人がコーディングしたCよりJavaの方が速くなるということはよくあるそうです。 また、HotSpotの場合、何度かインタプリタ実行して、 その時の統計情報を元に最適化を行うので、Cコンパイラの 普通の最適化より有利になることがあるようです。

参考URL:
http://www.atmarkit.co.jp/fjava/special/jvmhistory/jvmhistory02.html
white-tiger
質問者

補足

>素人がコーディングしたCよりJavaの方が >速くなるということはよくあるそうです。 具体例をありがとうございます。 そうなのですか!

その他の回答 (4)

  • sha-girl
  • ベストアンサー率52% (430/816)
回答No.5

>これをジャバ・ホットスポット・テクノロジを使って Java で作り直せば・・・ JDK1.2.2からHotSpotがサポートされているようです。 #ところでJava -versinoとうてば #Java HotSpot(TM) Client VM (build 1.4.2_04-b05, mixed mode) #とでるのですが、現在のJVMは何もしなくてもHotSpotテクノロジが動いているんでしょうか? >「JavaはC++より倍以上高速になる」というのは本当でしょうか? 今のgccなどはかなり洗練されておりg++-o3で最適化した単純なコードであれば アセンブラで組んだ場合と大して変わりません。 例えばOpenSSLの場合C以外にアセンブラ(NASM)もありますが、 速度的な差は1.5倍もないでしょう。 少なくともWindowsやLinuxで「JavaはC++より倍以上高速になる」というのは物理的に無理では? 関連記事 http://www.sun.com/smi/Press/sunflash/9904/sunflash.990427.5.html http://www.itmedia.co.jp/mobile/0208/29/n_midp.html http://ew.hitachi-system.co.jp/w/HotSpot.html

white-tiger
質問者

お礼

#ところでJava -versinoとうてば #Java HotSpot(TM) Client VM (build 1.4.2_04-b05, mixed mode) #とでるのですが、現在のJVMは何もしなくてもHotSpotテクノロジが動いているんでしょうか? これ、私も知りたいです。別質問にしようと思います。 教えて頂いたサイトを見ると「C言語などで開発されたプログラムとほとんど変わらない実行速度を実現する技術である。」となっていますね。

  • hpsk
  • ベストアンサー率40% (48/119)
回答No.4

#3のhpskです。重複投稿になって申し訳ないですが、少し追加させてください。 HotSpotに限らず、Javaの方がCより速度面で有利な要素というのはいくつかあります。 たとえば、ごみ集めもその一つです。たいていのごみ集めのアルゴリズムは、メモリの解放を自動的に行うだけでなく、局所性が良くなるようにオブジェクトの再配置を行います。 こういうものがうまくハマればかなりの速度向上が期待できます。 ただし、この「うまくハマれば」というのが曲者で、CPUやメモリなどのハードウェアやプログラム自身の性質にかなり影響されてしまいます。 ということで、「ハードウェアやプログラムの性質によっては」2,3倍高速に動作することもある、くらいに考えたほうが良いのではないでしょうか。

  • mach999
  • ベストアンサー率75% (36/48)
回答No.2

あんまり関係ありませんが気になったので。 「C++の実行速度」という表現はナンセンスだと思います。なぜなら、プログラムの実行速度というのは言語で決まるのではなく、コンパイラによって決まるからです。同じソースコードであっても、VC++でコンパイルするかgccでコンパイルするかC++Builderでコンパイルするかによってマシンコードは違ってくるはずで、実行速度も当然変わってくるはずです(わからないくらいわずかな差しかないとは思いますが)。

  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.1

 どうなんだろうなぁ。メーカー公称値を鵜呑みにするのもよろしくないが、天下のIntelがそう言っているんだから少しは期待できるのかも知れないなぁ。  少し調べてみた限りでは、まぁJITよりかは期待できそうだ。C++と・・・・と言われたら・・・・どう比べるんだろうな・・・・そもそも。C++コンパイラの最適化やコードの作り方によっても大きく変わってきそうやし。  まぁ、こんな技術もあるくらいに考えておいたら良いんじゃないか。どうせ言語なんてどれも一長一短。

white-tiger
質問者

お礼

たしかに、Intelなんですよね。私的にはC++と同じくらいの速度がでれば、十分凄いと思います。

関連するQ&A