[英]Measure execution time of Java with JVMTI
我不了解Sun JVM,但是當您請求MethodEntry / Exit事件時,IBM JVM進入了我們所謂的FullSpeedDebug模式。...FSD大大降低了執行速度。
就像您說的那樣,您可以像我的探查器一樣使用BCI,但是除非您有選擇地選擇使用哪種方法,否則還會看到速度變慢。 例如,我的探查器在每個條目和所有對象創建的方法以及其他一些區域的所有可能的出口上插入if(profiling)callProfilerHook(),...這些額外的檢查可能會使執行速度降低50%以上。 ..
至於如何BCI ...好吧,我寫了我自己的C庫來做...在技術上並不難(僅刪除StackMapTable就可以了,但是我可能要花點時間。)或者,您也可以使用ASM等。 等
最終... callBackHook將增加開銷,並且在小型方法上使報告的CPU /時鍾時間變得毫無意義,除非您執行一些復雜的開銷計算...即使執行此操作,您的回調代碼也會影響處理器L1緩存和Java的形狀代碼的效率降低,因為它的空間較小。
當我以一種有趣的方式可視化執行時,我的探查器基本上會忽略報告的時間...我希望了解所有代碼的流程,實際上在大多數情況下,正在運行什么代碼(大多數Java項目都不知道在其應用中運行的數百萬行第三方代碼)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.