gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-11-01 01:55:27 24 4
gpt4 key购买 nike

我们使用拦截器来测量 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com