多くの異なる入力 (〜 1000) でプロファイリングしたいコードのセグメントがあるため、各テストを手動で実行して結果を保存するのは意味がありません。Eclipse と組み合わせて yourkit を使用してプロファイリングしています。プロファイリング用の「新しいセッション」を作成する方法はありますか? 各実行を分離できるようにしたいので、それが最も理にかなっています。
2 に答える
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
}
}
収集を停止し、スナップショットをキャプチャし、データをクリアし、収集を再開する必要はないと思います。データをキャプチャしてクリアするだけでかまいませんが、再確認してください。テストが実行されたら、キット内のスナップショットを開いてプロファイリング データを分析できます。
于 2014-03-28T08:03:19.940 に答える