我想知道Oracle Java 7(或8)Hotspot VM執行的循環優化是什麼?循環優化Oracle Java 7-8 Hotspot 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.cpp中實現了Superword Level Parallelism的概念。另請參閱JVM選項
-XX:+UseSuperWord
+0
你在這裏做了一個研究! + Integer.MaxInt給你! –
+0
非常有幫助!她的一些補充信息:[在HotSpot JVM中的VectorizaAon由 Vladimir Ivanov,HotSpot JVM編譯器,Oracle公司 2017年4月8日](http://cr.openjdk.java.net/~vlivanov/talks/2017_Vectorization_in_HotSpot_JVM.pdf) – apete
相關問題
- 1. Java循環性能優化
- 2. Java for循環優化
- 3. 優化在循環內創建對象
- 4. 的Oracle PL/FOR循環優化
- 5. 我可以使用Oracle Java 7 HotSpot VM安裝DCEVM嗎?
- 6. 循環優化/ CoreData優化
- 7. 循環優化
- 8. 優化循環
- 9. 循環優化
- 10. 優化Python循環
- 11. 優化R循環
- 12. 優化foreach循環
- 13. 優化貼循環
- 14. 優化雙循環
- 15. AS3循環優化
- 16. 優化此循環
- 17. 優化循環JavaScript
- 18. Java的ArrayList的for循環優化
- 19. R循環優化/循環太耗時
- 20. Java HotSpot錯誤
- 21. JVM選項以優化循環語句
- 22. 優化嵌套循環
- 23. 循環緩衝區優化
- 24. SSE SIMD優化For循環
- 25. LLVM循環優化錯誤?
- 26. 在R中優化循環
- 27. iPhone SDK - 優化for循環
- 28. F#「for循環」優化
- 29. XNA優化 - 循環展開?
- 30. 來優化嵌套循環
編譯器編寫者可能......但我懷疑他們會這樣做。無論如何,如果你真的需要知道你可以隨時下載OpenJDK源代碼樹併爲自己找出答案。 –
主要的可能是deadcode消除,循環展開和變量提升。 – assylias
@密切的選民:這個問題在多遠的地方要求一個非現場資源?看看當前的答案。 (當然,它有很多鏈接,但這些只是指向一個持久資源(即OpenJDK源代碼)的指針,並且打算用於進一步的研究)。 – Marco13