Oracle Java 7(または8)Hotspot VMによって実行されるループ最適化について教えてください。ループ最適化Oracle Java 7-8ホットスポットVM
5
A
答えて
12
- Range Check Elimination - ループ不変配列の範囲チェックを排除します。詳細は、PhaseIdealLoop::do_range_checkを参照してください。最適化はフラグによって制御されます
-XX:+RangeCheckElimination
- Loop Peeling - ループから最初の反復を分割し、ループ本体の外側で実行します。ここでの驚くべき説明を参照してくださいPhaseIdealLoop::do_peeling。この最適化は、フラグによって制御されます
-XX:PartialPeelLoop=true
- Loop Predication - ループボディの内部から状態チェックを削除します。現在、配列の範囲チェックやループ不変条件のチェック(ヌルチェックや配列チェックなど)を削除するために、ループ予測最適化が適用されています。ループ予測は
-XX:+UseLoopPredicate
によって制御されます。コードPhaseIdealLoop::loop_predication_impl - Loop Unrolling - をSuperword Level Parallelismの最初のステップとして使用します。 PhaseIdealLoop::do_unrollを参照してください。ループアンローリングは、次のプロパティによって制御されます。
-XX:LoopMaxUnroll=16
および-XX:LoopUnrollMin=4
- 配列の塗りつぶし - 塗りつぶしパターンをintriscに置き換えます。 PhaseIdealLoop::do_intrinsify_fillを参照してください。 JVMオプション
-XX:+OptimizeFill
- ベクトル化 - 配列の初期化、コピー、および算術演算を、展開されていないループのベクトル演算で置き換えます。ホットスポットコンパイラはSuperword Level Parallelismのコンセプトをsuperword.cppに実装しています。 JVMオプションも参照してください。
-XX:+UseSuperWord
+0
あなたはここで地獄の研究をしました! + Integer.MaxIntあなたに! –
+0
非常に役に立ちました!彼女の補完的な情報:[HotSpot JVMのVectorizaAon] Vladimir Ivanov、HotSpot JVM Compiler、Oracle Corp. 2001年4月8日](http://cr.openjdk.java.net/~vlivanov/talks/2017_Vectorization_in_HotSpot_JVM.pdf) – apete
関連する問題
- 1. ホットスポットJITの最適化
- 2. Java forループの最適化
- 3. 最適化AzureのVM A0
- 4. Oracle SQL最適化
- 5. Oracleは、最適化
- 6. Oracle TOP最適化
- 7. Javaでwhileループを最適化する
- 8. ループ最適化C#
- 9. Oracleのクエリの最適化
- 10. 最適化OracleのXMLクエリ
- 11. のOracle SQLの最適化
- 12. ハッシュ最適化Java
- 13. ループの最適化/削除
- 14. Pythonフィッティング:最適化ループ
- 15. foreachループの最適化
- 16. ループのmatlabを最適化
- 17. Numba Cythonループ最適化VS
- 18. ループと比較最適化
- 19. "静的"ループの最適化
- 20. C#XmlSerialiserからOracle Clob最適化へ
- 21. Oracle 11gの最適化手順
- 22. Oracle 11gの:クエリのパフォーマンスの最適化
- 23. Javaオープンソースイメージ最適化ライブラリ
- 24. Javaコードの最適化
- 25. Java xml saverの最適化
- 26. Javaのコレクションの最適化
- 27. Java Trieの最適化
- 28. Apache Derby&Java - 最適化インサート
- 29. Java式の最適化
- 30. Java 7ソート「最適化」
コンパイラの作者はおそらく...しかし、私は彼らがそうすることはできません。とにかく、あなたが本当に知りたいのであれば、いつでもOpenJDKのソースツリーをダウンロードして、自分でそれを理解することができます。 –
主なものは、おそらくデッドコードの除去、ループアンローリングと可変ホイストです。 – assylias
@クローズ投票者:オフサイトのリソースをどこまで求めていますか?現在の答えを見てください。 (もちろん、その中にはたくさんのリンクがありますが、これらは耐久性のあるリソース(つまり、OpenJDKソース)へのポインタに過ぎず、今後の研究を意図しています)。 – Marco13