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

SDR*_*yes 4 java performance audit monitoring java-ee

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

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

hay*_*lem 5

使用AOP

您可以使用AspectJ面向方面编程库来实现基准测试程序.

例如,请参阅:

使用Profiler

  • 您可以实现自己的代理扩展(例如,对于JProfiler).
  • 或者你可以放弃你的拦截器,只需从任何探查器检查允许捕获快照并记录执行时间.

使用JVMTI

实际上,这是某些剖析器的作用.

你可以使用JVMTI API(不完全确定这会飞,说实话)来实现你自己的代码检查器并直接将自己挂钩到JVM中.


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

关于jb(有效)关注他的回答是私有方法可能在编译时或运行时内联,一些JVM可能不会这样做或允许禁用此功能.

  • Oracle的JRockit有一个-XnoOpt禁用优化的选项(包括这个特定的优化).
  • Oracle/Sun的HotSpot至少习惯了-XX:-Inline(不确定它是否仍然存在或做任何事情).

但是,这意味着在激活内联时,您无法准确测量生产中的内容.仍然,可能很方便检查您的代码.