大家可以帮我解决这个问题
&gt;我使用Java Reflection 执行Java类的方法。现在我想获得方法的实际执行时间,而不管反射所花费的时间< /强> 的
类AClass { //方法
void abc(){ System.out.println(“Hello World”); }
//现在使用反射我将调用此方法
AClass aObj = new AClass();
类_cObj = Class.forName(“AClass”); 方法_meth_Invoke = cObj.getMethod(“abc”,null);
//现在听到,如果我在执行此(Method.invoke())语句之前采取时间戳,然后再采用另一个时间戳并减去它(使用“System.nanoTime()”) ,然后我得到两个方法的时间abc()+ invoke()方法。这就是我想知道方法abc()的实际执行时间的问题。
_meth_Invoke.invoke(aObj,...); }
请指导我,我花了很多时间在冲浪上,但不能为它准备合适的材料。
答案 0 :(得分:2)
使用分析器查看程序执行该方法所花费的时间。如果您使用的是Oracle JDK 6(或更新版本),则可以使用JDK中包含的JVisualVM进行性能分析。
通过在命令提示符窗口中输入命令jvisualvm
来启动它。
答案 1 :(得分:0)
通过反射调用Method的成本通常为亚微秒。您可以在计算机上对此进行基准测试以确认这一点如果您尝试对小于10微秒的方法进行基准测试,则很难准确地进行。如果它远不止于此,我就不用担心了。
答案 2 :(得分:0)
您可以测量通过反射调用空方法(void xyz() {}
)所花费的时间,并从您通过反射调用abc()
方法测量的时间中减去它。
这与编程方式一样准确。
否则你必须使用像JVisualVM这样的探查器。