2014-03-25 59 views
0

我有一段代碼想在許多不同的輸入(〜1000)上進行配置,所以手動運行每個測試並保存結果都沒有意義。我將您的工具包與Eclipse結合使用來進行配置。有沒有辦法爲分析創建「新會話」?我希望能夠分開每個運行,以便最有意義。分離Yourkit會話

回答

1

你不需要爲每個測試創建「會話」。相反,您必須在每次測試結束時捕獲分析數據的快照,並在運行下一個測試之前清除分析數據。

使用yourkit API,你可以在類似的方式做到這一點:

public void profile(String host, int port, List<InputData> inputDataSet) { 
    Map<InputData, String> pathMap = new HashMap<InputData, String>(); //If you want to save the location of each file 

    //Init profiling data collection 
    com.yourkit.api.Controller controller = new Controller(host, port); 
    controller.startCPUSampling(/*with your settings*/); 
    controller.startAllocationRecording(/*With your settings*/); 
    //controller.startXXX with whatever data you want to collect 

    for (InputData input: inputDataSet) { 
    //Run your test 
    runTest(inputData); 

    //Save profiling data 
    String path = controller.captureSnapshot(/*With or without memory dump*/); 
    pathMap.put(input, path); 

    //Clear yourkit profiling data 
    controller.clearAllocationData(); 
    controller.clearCPUData(); 
    //controller.clearXXX with whatever data you are collecting 
    } 
} 

我不認爲你需要停止收集,捕捉快照,清晰的數據,重新開始收集,你可以捕捉和清除數據,但請仔細檢查。 運行測試後,您可以打開工具包中的快照並分析分析數據。

0

不幸的是,目前還不清楚如何運行測試。每個測試都在自己的JVM進程中運行,還是在單個JVM中循環運行所有測試?

如果您在自己的JVM中運行每個測試,那麼您需要1)使用profiler代理運行JVM,即使用-agentpath選項(詳細信息請參見http://www.yourkit.com/docs/java/help/agent.jsp)。 2)指定JVM啓動時的分析(代理選項「採樣」,「跟蹤」等)。3)在JVM出口捕獲快照文件(「onexit」代理選項)。

全部選項http://www.yourkit.com/docs/java/help/startup_options.jsp

如果你運行單個JVM中您可以使用分析器API http://www.yourkit.com/docs/java/help/api.jsp開始測試完成後前開始測試,並捕獲快照profling所有測試列表。你需要使用com.yourkit.api.Controller類。