0

多くの異なる入力 (〜 1000) でプロファイリングしたいコードのセグメントがあるため、各テストを手動で実行して結果を保存するのは意味がありません。Eclipse と組み合わせて yourkit を使用してプロファイリングしています。プロファイリング用の「新しいセッション」を作成する方法はありますか? 各実行を分離できるようにしたいので、それが最も理にかなっています。

4

2 に答える 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 に答える