【发布时间】:2010-11-20 23:42:37
【问题描述】:
方法调用时间和方法执行时间有区别吗?我认为我们可以很容易地测量方法执行时间。但是我如何测量方法调用时间。 会不会每次都不一样。 (Java)
【问题讨论】:
标签: java
方法调用时间和方法执行时间有区别吗?我认为我们可以很容易地测量方法执行时间。但是我如何测量方法调用时间。 会不会每次都不一样。 (Java)
【问题讨论】:
标签: java
调用时间是调用或调用方法所需的时间。 执行时间是执行方法体所需的时间。
请参阅 JVM 规范中的 7.7 Invoking Methods 和 Instruction Set。有 4 种不同的方式可以调用 Java 方法:
invokevirtual - 用于类方法调用invokeinterface - 用于接口方法调用invokestatic - 用于静态方法invokespecial - 用于构造函数、私有方法和super 调用invokestatic 通常是最快的,因为它与特定的类相关联,而其他类可能相对较慢。 invokeinterface 可能是最慢的,因为类可以实现多个接口,必须解析正确的方法。
同一方法的不同调用将花费相同的时间。
【讨论】:
invokestatic 来调用派生类方法的基类版本吗?如果是这样,这似乎是一个可能的安全漏洞。
.class 文件,我不认为这是 VM 中的安全漏洞。
.class 文件吗?在其他类的方法上调用invokestatic?
.class文件但方法不存在或不是静态的,JVM会抛出链接错误。
调用 = 执行 ---> 调用时间 = 执行时间。
【讨论】:
调用一个方法和执行一个方法是同义词——它们是同一个东西。
也许我误解了你的问题。
【讨论】: