我有一个简单的类,我想测量方法调用次数,我该怎么做?寻找通用的方法来实现这一点,以便我也可以将它应用于更困难的类。谢谢
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);
}
}
答案 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(如果有)处理时间,错误和调用计数等。还列出了实例化的线程和类。这肯定会满足您的需求