想象一下,您有一個命令行應用程序,它接受輸入文件並對其執行任何操作。現在想象你想要採樣/分析這個應用程序。如果是Visual Studio,您只需選擇性能分析方法(採樣/檢測),VS將爲您運行應用程序並在程序完成時收集數據。但據我所見,VisualVM中沒有類似的功能。您必須運行您的應用程序,然後在VisualVM中選擇它,然後明確開始採樣/分析。問題在於,有時使用某些輸入數據執行程序比使用VisualVM所需的時間少。同樣採用這種方法,不可能批量配置文件應用程序。有人建議以Eclipse的調試模式啓動應用程序,並在main()方法的開始處設置斷點。然後設置VisualVM並繼續執行。但我懷疑在Debug和Release模式下運行會對性能產生影響。 建議?使用VisualVM進行性能分析應用程序
3
A
回答
1
VisualVM 1.3.6有一個新的Startup Profiler plugin,允許您從應用程序啓動時對應用程序進行分析。有關更多信息,請參閱此article。
1
如果程序執行I/O操作,Visual Studio採樣器將不會看到I/O,因爲它是「CPU採樣器」(即使幾乎所有的時間都花在等待I/O上)。
如果使用Instrumentation,則不會看到任何行級別的信息,因爲它只在功能級別進行彙總。我使用this technique。
如果程序運行得太快而無法採樣,只需在其周圍放置一個臨時外循環,例如100或1000次迭代。
調試和發佈模式之間的差別將是微乎其微,除非你在你的代碼,在毛圈不包含任何函數調用,或花費時間的好分數緊密循環,如果你正在做數據結構操作在庫中做了大量驗證。
如果你是,那麼你的樣品將顯示你是,你會知道,釋放會產生速度差。
就批處理分析而言,我沒有。我只是留意程序的整體吞吐率。如果有一些輸入似乎會使其耗時太長,那麼我會使用該輸入在程序上執行採樣過程,查看問題所在,然後解決問題。
相關問題
- 1. 使用VisualVM分析tomcat應用程序
- 2. 用visualvm分析Tomcat web應用程序
- 3. maven/visualvm:我如何使用visualvm來分析正在運行的surefire進程?
- 4. 使用堆棧進行性能分析
- 5. 使用profiler4j進行性能分析
- 6. 使用Graphite進行性能分析
- 7. java應用程序的性能分析
- 8. Android應用程序的性能分析。
- 9. 使用VisualVM監控Java應用程序
- 10. 使用VS進行性能分析時出錯:無法打開性能分析器驅動程序
- 11. 如何使用visualVM剖析java應用程序?
- 12. 使用Rails應用程序進行數據分析
- 13. 使用API進行.NET性能分析器使用API
- 14. 使用The Grinder進行Web應用程序性能測試
- 15. VisualVM不能打開本地虛擬機進行分析
- 16. Java分析 - VisualVM
- 17. 使用VisualVM自動啓動CPU分析
- 18. 使用VisualVM分析內存泄漏
- 19. 分析程序性能
- 20. 使用Mini Profiler對ASP.Net Web應用程序中的SQL相關操作進行性能分析的步驟
- 21. 使用ltrace分析Android應用程序
- 22. 使用YourKit分析Spark應用程序
- 23. 分析使用TopShelf的應用程序
- 24. AIX應用程序的性能改進。
- 25. 使用zeromq分析並行進程
- 26. 使用JVisualVM進行JVM遠程分析
- 27. 使用堆棧進行性能分析構建
- 28. 在Linux上使用time.time()進行性能分析
- 29. 使用可視化虛擬機進行性能分析
- 30. 在CPU時間使用fprof進行erlang性能分析