java如何测量方法调用次数?

时间:2012-02-25 13:19:19

标签: java methods time call

我有一个简单的类,我想测量方法调用次数,我该怎么做?寻找通用的方法来实现这一点,以便我也可以将它应用于更困难的类。谢谢

import java.io.*;
import java.util.*; 

public class Turtle {
  private String name;
  private Formatter f;
  public Turtle(String name, Formatter f) {
    this.name = name;
    this.f = f;
  }

  public void move(int x, int y) {
    f.format("%s The Turtle is at (%d,%d)\n", name, x, y);
  }

  public static void main(String[] args) {
    PrintStream outAlias = System.err;
    Turtle tommy = new Turtle("Tommy",
      new Formatter(System.out));
    Turtle terry = new Turtle("Terry",
      new Formatter(outAlias));
    tommy.move(0,0);
    terry.move(4,8);
    tommy.move(3,4);
    terry.move(2,5);
    tommy.move(3,3);
    terry.move(3,3);
  }
}

4 个答案:

答案 0 :(得分:3)

使用分析器或手动计算:

public static int MOVE_CALL_COUNT;


public void move(int, int)
{
    MOVE_CALL_COUNT++;
}

建议进行性能分析。在NetBeans中,有一个内置的分析器。否则,建议使用VisualVM,它与NetBeans中的分析器相同。

如果您真的想知道运行这些方法需要多长时间,请使用分析器。

答案 1 :(得分:2)

尝试使用JDK中的探查器visualvm

答案 2 :(得分:1)

如果它正在测试每个方法执行所需的时间,那么在SO上已经存在一些与此相关的好问题。查看this one for example

我的偏好,特别是在具有许多方法的大型项目中,将使用AOP,因此它不会涉及过多地更改现有代码。关于我上面提到的问题,This answer出于同样的原因提出了AOP。正如他所说的那样,在AOP中进行深入研究超出了这个范围,但它当然值得一看。看看this tutorial如何使用spring进行方法计时。

答案 3 :(得分:1)

使用专用工具,可以显示更多你需要的东西:)我认为VisualVM是最好的,但是还有其他可用的东西(例如JDK本身提供的JConsole,或支付的JRockit)。
阅读更多here on my post

这些工具显示了它们运行的​​应用程序和资源以及servlet(如果有)处理时间,错误和调用计数等。还列出了实例化的线程和类。这肯定会满足您的需求