私は奇妙な作業をしました。私はリファクタリング大きなコードベース(簡単な部分)で特定のメソッドとパフォーマンスの利得レポートを提供する必要があります。私は実行とメモリ使用のスピードに焦点を当てるべきです。彼らは方法でパフォーマンスの向上を知りたい!Javaメソッドのリファクタリングパフォーマンスを測定する
だから私はこのような方法があります:私はちょうどログを処理する必要が最後に
public void processHugeFile(File f) {
long start = java.lang.System.currentTimeMillis();
// just lists, some primitives, simple logic,...
long end = java.lang.System.currentTimeMillis();
logger.log("performance comparison - exec time: " + (end - start));
}
:
public void processHugeFile(File f) {
long start = java.lang.System.currentTimeMillis();
// lots of hashmaps, lots of arrays, weird logic,...
long end = java.lang.System.currentTimeMillis();
logger.log("performance comparison - exec time: " + (end - start));
}
その後、私はそれをリファクタリングする必要があります。
しかし、何についてメモリ使用量?私はgetRuntime().totalMemory() - getRuntime().freeMemory()
とgetHeapMemoryUsage().getUsed()
を試しましたが、動作していないようです。また、JVMプロファイラはメソッドではないオブジェクトに焦点を当てています。私はかなり大きなコードベースを話しています。
誰かに私にいくつかのヒントを教えてもらえますか?
ありがとうございました。
メモリ使用量の変更を判断するために、時間の経過とともにプロファイルをプロファイルする必要があります。最大/平均メモリ消費量、GCで消費された時間などです。 –