2013-12-11 51 views
3

想象一下,您有一個命令行應用程序,它接受輸入文件並對其執行任何操作。現在想象你想要採樣/分析這個應用程序。如果是Visual Studio,您只需選擇性能分析方法(採樣/檢測),VS將爲您運行應用程序並在程序完成時收集數據。但據我所見,VisualVM中沒有類似的功能。您必須運行您的應用程序,然後在VisualVM中選擇它,然後明確開始採樣/分析。問題在於,有時使用某些輸入數據執行程序比使用VisualVM所需的時間少。同樣採用這種方法,不可能批量配置文件應用程序。有人建議以Eclipse的調試模式啓動應用程序,並在main()方法的開始處設置斷點。然後設置VisualVM並繼續執行。但我懷疑在Debug和Release模式下運行會對性能產生影響。 建議?使用VisualVM進行性能分析應用程序

回答

1

VisualVM 1.3.6有一個新的Startup Profiler plugin,允許您從應用程序啓動時對應用程序進行分析。有關更多信息,請參閱此article

1

如果程序執行I/O操作,Visual Studio採樣器將不會看到I/O,因爲它是「CPU採樣器」(即使幾乎所有的時間都花在等待I/O上)。

如果使用Instrumentation,則不會看到任何行級別的信息,因爲它只在功能級別進行彙總。我使用this technique

如果程序運行得太快而無法採樣,只需在其周圍放置一個臨時外循環,例如100或1000次迭代。

調試和發佈模式之間的差別將是微乎其微,除非你在你的代碼,在毛圈不包含任何函數調用,或花費時間的好分數緊密循環,如果你正在做數據結構操作在庫中做了大量驗證。

如果你是,那麼你的樣品將顯示你是,你會知道,釋放會產生速度差。

就批處理分析而言,我沒有。我只是留意程序的整體吞吐率。如果有一些輸入似乎會使其耗時太長,那麼我會使用該輸入在程序上執行採樣過程,查看問題所在,然後解決問題。