電子書籍の厳選無料作品が豊富!

Java初心者です。Java言語で開発されたソースプログラムは、コンパイルするとバイトコード(中間言語)に変換されるので、特定の機種やOSに依存しないという大きなメリットがあるそうですが、半面、実行時に、バイトコードをそのコンピュータ固有の形式(マシン語)に変換しなおしてから実行することになるので、一般にはその余分な一ステップの分だけ実行速度が遅くなると言われています。ここで、自分がJava言語で開発したプログラムは自分のマシンでしか使わないとした場合、自分のマシンの仕様(OSの種類、32ビットか64ビットかなど)は予めわかっているので、実行形式プログラムを予めバイトコードではなくマシン語にまで変換してしまうということはできないのでしょうか? これができれば、実行時の余分な変換ステップがなくなるので、その分速くなると思うのですが。逆に言うと、とにかく実行速度最優先というプログラム(例えば、1ミリ秒速いかどうかを争う場合)を開発する場合は、JavaではなくC++など他のコンパイル言語を使って開発すべきなのでしょうか? また、既にJavaで開発されたプログラムがある場合などは、C++などの他の言語で書き直すべきなのでしょうか? 最も実行速度が速くなるコンパイル言語は何でしょうか? お詳しい方、ご教示願います。

A 回答 (1件)

https://gcc.gnu.org/java/

まあまじめな話としてセマンティックスを維持する限り Java よりも C の方がどうしても早くなりやすいんだけどね. あと, 「最も実行速度が速くなる」というのは言語の問題だろうかって疑問もある. たとえ C でもくそなライブラリを使うと遅くなるし, Java をベースにしても死ぬほど頑張ったライブラリを (JNI などを通じて) 使えば高速にできるはず.
    • good
    • 0
この回答へのお礼

Tacosan様、ご教示、ありがとうございました。GCJを使えば、Javaソースコードを直接ネイティブのマシン語にコンパイルできるんですね。勉強になりました。Java入門の解説サイトでは、GCJとかに触れているものは、私の見た範囲ではなかったです。今ちょっと調べてみたら、Eclipse上からでもGCJを使う方法があるとか書いているサイトもありますね。何はともあれ、これからいろいろ調べて試行錯誤してみます。

それと、ライブラリの品質も実行速度に大きく影響するんですね。科学・統計計算ライブラリなども、無料のものではなく高価なものを使うと、計算結果が同じでも、実行速度はかなり違うんでしょうね。

お礼日時:2016/07/05 15:56

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!