2012-07-16 6 views
5

タイトルとして:JVMにランタイムブランチ予測がありますか?もしそうなら、分岐結果をヒントするためのJavaコードの方法はありますか?

私はいくつかのCコンパイラ(GCCなど)では、予想される分岐予測結果についてコンパイラにヒントを与えることができることを覚えています。 JVMにはそのような機能がありますか?

ありがとうございました!

答えて

4

私にエスケープされた新しい注釈がない限り、いいえ。

一方、このような機能が非常に有用であることは明らかではありません。 C/C++などの言語とは異なり、ソースコードのレベルでの「予測」は必ずしも最良の戦略ではないことを覚えておいてください。実際に実行されているコードは実際に実行中は謎ではないため、JVM潜在的にクリティカルな動作を監視し、必要に応じてその測定値に従ってコードのセクションを再コンパイルすることができます。

+1

Neilの答えを強化するためには、ほとんどの現代のJVMがブランチの動作を監視し、CPUがより簡単に予測できるように支店を設定しようとしています。 –

1

いいえ、jvmにはソースレベルでこのようなコンパイラのヒントや最適化がありません。

+3

を。しかし、HotSpot JVMは大きなオプティマイザであり、実行の振る舞いに関する統計情報を収集しているため、そのような最適化がないと言うように独断的になることはありません。一方、問題はむしろ間違って形成されています。分岐予測を持つのは* CPU *です。コンパイラが行うことができるのは、CPUと最もよく機能するようにコードを並べ替えることだけです。 – EJP

+1

@EJP - もちろん、私はjvmの内部で何が起こったのかを指摘していませんでした。 – jtahlborn

関連する問題