如何获取“方法”的实际执行时间使用 Java 反射?

发布于 2024-10-28 18:58:29 字数 717 浏览 0 评论 0原文

大家好,谁能帮我解决这个问题

>我正在使用 Java Reflection 执行 Java 类的方法。现在我想获取方法的实际执行时间,无论反射所花费的时间

AClass 类{ //方法

void abc(){ System.out.println("你好世界"); }

//现在使用反射我将调用这个方法

AClass aObj=new AClass();

Class _cObj=Class.forName(" A类”); Method _meth_Invoke=cObj.getMethod("abc",null);

//现在听一下,如果我在执行这个 (Method.invoke()) 语句之前使用时间戳,然后在采取另一个时间戳并减去它(使用“System.nanoTime()”)之后,然后我得到两个方法 abc()+ invoke() 方法的时间。这就是我只想知道实际执行的问题方法abc()的时间。

_meth_Invoke.invoke(aObj,...); }

请指导我,我花了很多时间冲浪,但无法找到合适的材料。

Hi can anyone help me in this issue

>I am executing a method of a Java class using Java Reflection.Now i want to get the real execution time of a method regardless the time taken by reflection.

class AClass {
//method

void abc(){
System.out.println("Hello World");
}

//Now using reflection i am going to invoke this method

AClass aObj=new AClass();

Class _cObj=Class.forName("AClass");
Method _meth_Invoke=cObj.getMethod("abc",null);

//Now hear as u see that if i take time Stamp before executing this (Method.invoke())statement and then after take another time stamp and subtract it(using "System.nanoTime()" ), then i get the TIME of both methods abc()+ invoke() method.And thats the problem that i just want to get know the actual execution time of Method abc().

_meth_Invoke.invoke(aObj,...);
}

Kindly guide me i spent a lot of time on surfing but cant fine the right material for it.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

不顾 2024-11-04 18:58:29

使用探查器来查明程序执行该方法花费了多少时间。如果您使用的是 Oracle 的 JDK 6(或更高版本),则可以使用 JVisualVM 包含在 JDK 中用于分析。

通过在命令提示符窗口中输入命令jvisualvm来启动它。

Use a profiler to find out how much time the program is spending executing the method. If you're using Oracle's JDK 6 (or newer), you could use JVisualVM which is included with the JDK for profiling.

Start it by entering the command jvisualvm in a command prompt window.

千里故人稀 2024-11-04 18:58:29

通过反射调用方法的成本通常为亚微秒。您可以在您的机器上进行基准测试来确认这一点。如果您尝试对小于 10 微秒的方法进行基准测试,则很难准确地做到这一点。如果比这个多得多,我就不会担心。

The cost of calling a Method via reflection is typically sub-microsecond. You can benchmark this on your machine to confirm this. If you are trying to benchmark a method which is less than 10 micro-seconds this is very hard to do accurately. If its much more than this I wouldn't worry about it.

欲拥i 2024-11-04 18:58:29

您可以通过反射测量调用空方法 (void xyz() {}) 所需的时间,并从调用 abc() 方法测量的时间中减去该时间通过反射。
这是您可以通过编程获得的最准确的结果。

否则,您必须使用 JVisualVM 之类的分析器。

You can measure the time it takes to call an empty method (void xyz() {}) via reflection and subtract it from the time you measured calling the abc() method via reflection.
This is as accurate as you can get programmatically.

Otherwise you have to use a profiler like JVisualVM.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文