java - 我们如何衡量私有(private)方法的执行时间呢?

标签 java performance jakarta-ee monitoring audit

我们使用拦截器来测量 bean 的公共(public)方法调用的执行时间。尽管如此,当一个 bean 的方法调用其他私有(private)方法时,它似乎忽略了审计拦截器。

我们如何衡量私有(private)方法的执行时间?

最佳答案

使用AOP

您可以使用 Aspect-Oriented Programming 实现基准测试类似图书馆 AspectJ .

例如,参见:

使用分析器

  • 您可以实现自己的代理扩展(例如,用于 JProfiler)。
  • 或者您可以放弃您的拦截器并简单地从任何允许捕获快照和记录执行时间的分析器中进行检查。

使用 JVMTI

这实际上是一些分析器所做的。

您可以使用 JVMTI API(不完全确定这会飞,老实说)到implement your own code inspector并直接将自己连接到 JVM。


偷偷摸摸和邪恶的内联问题

关于 jb's (valid) concern in his answer私有(private)方法可能会在编译时或运行时内联,某些 JVM 可能不会这样做或允许禁用此功能。

  • Oracle 的 JRockit 有一个 -XnoOpt 选项可以禁用优化(包括这个特定的优化)。
  • Oracle/Sun 的 HotSpot 至少曾经有 -XX:-Inline(不确定它是否仍然存在或做了什么)。

但是,这意味着当内联被激活时,您无法准确测量生产中的内容。尽管如此,检查您的代码可能还是很方便。

关于java - 我们如何衡量私有(private)方法的执行时间呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11018311/

相关文章:

c# - 更快的位图对比度算法

java - 线程 "main"javax.xml.bind.UnmarshalException 中出现异常

java - JAX-RS发送序列化对象

java - 在 Talend 中将数据从 tJavaRow 传递到 tJava

java - 更快地查看代码结果的方法

java - 如何使用 E... 元素编写 Java 泛型方法并返回 List<E>

android - 如何从手机浏览器打开深层链接?

php - 在 foreach 循环参数中分解数组

java - Java内核真的存在吗?

mysql - 如何配置 TomEE 和 JPA