私は疑問に思っていました-Javaコードが与えられた場合、Javaコンパイラがそれをどのように最適化するかをどのように確認できますか?
このためのJDKツールはありますか?
ググってみましたが、関連するものは何もありませんでした。
私は疑問に思っていました-Javaコードが与えられた場合、Javaコンパイラがそれをどのように最適化するかをどのように確認できますか?
このためのJDKツールはありますか?
ググってみましたが、関連するものは何もありませんでした。
コンパイラが最適化したものを確認するには、たとえばjavapまたはJDを使用してバイトコードを逆コンパイルします。
ジャスト イン タイム コンパイラが最適化したものを確認するには、デバッグ ログを有効にします (逆アセンブルされたマシン コードを読み取ります)。
javap
コードを逆アセンブルするために使用できます。
はjavac
一般に最適化によってほとんど何もしないことに注意してください。最新の JVM では、Java バイトコードをネイティブ マシン コードに変換するジャストインタイム コンパイラによってほとんどの最適化が行われます。
javac
最適化があったとしてもごくわずかしか実行しません。
Java での最適化は、ほとんどの場合、実行時に JIT コンパイラーによって行われます。JIT が最適化を実行すればするほど、より良いコードが生成されますが、初期遅延も増加します。
Java ジャストインタイム コンパイラによって生成されたネイティブ コードを取得するには: PrintAssemblyには OpenJDK 7 が必要です。
デバッグ オプション: Java HotSpot VM
-XX:-CITime ---- Prints time spent in JIT Compiler. (Introduced in 1.4.0.)
バイトコードを Java コードに戻すツールがあります。コードをコンパイルして.class
ファイルを取得し、Java コードにリバース エンジニアリングして、最適化を確認できます。