Java中方法的执行时间

4
我希望能在Java中打印方法的执行时间。目前我正在使用以下代码:
long startTime = System.currentTimeMillis();
// method body
long runTime= System.currentTimeMillis() - startTime;
System.out.println(" XYZ Method execution time: " + runTime);

我希望能够找到一个方法来获取项目中所有方法的运行时间,有没有什么办法可以避免在每个方法中编写这段代码?

该项目使用Spring 2.5和Struts 2。

编辑:我不想在每个方法中添加逻辑,我想编写一次逻辑,并使用某种配置来指定我需要打印执行时间的方法。因此,每当执行该方法时,自动将运行时间打印到控制台。其中一种方法就是将代码添加到序言和尾声中,但我不想编辑该方法,因为那样耗费时间,而且重复编写相同的代码也不是一个好习惯。


如果您想要性能日志,请使用perf4j @ http://perf4j.codehaus.org/。 - sreemanth pulagam
4个回答

4
我建议您查看Codahale的Metrics软件包。该软件包收集各种指标(包括时间),然后通过JMX或其他机制进行报告。

2
为什么不使用像YourKitJVisualVM这样的分析工具呢?JVisualVM是随JDK一起提供的。如果你真的想自己做,可以使用java.lang.instrumentASM编写自己的代理程序。使用这种方法在Java方法的前后添加逻辑很简单。
这里有一个链接可以帮助你入门

请问您能否添加一个示例? - Rais Alam
添加了一个链接以帮助演示。 - Amir Afghani
如何通过VisualVM获取Java方法的执行时间? - petertc

2

选项1 :: 使用AOP

选项2 :: 如果你在正确的位置记录日志(之前和之后),并在你的日志中加入时间戳,你可以使用任何分析工具(如logrythm、splunk的开源版本等)来分析你的日志并计算时间。但要记住,记录日志通常是一项耗费巨大的操作(AOP在某种程度上也是如此)。

无论你采取哪种方法,请确保考虑到你将对应用程序造成的性能影响,仅仅为了测量性能本身而已 :-).


1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接