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。

编辑:我不想为每个方法添加逻辑,我想,说,写一次逻辑并使用某种配置,我可以指定我需要打印执行时间的方法。因此,无论何时执行该方法,都会自动将运行时间打印到控制台。正如我所说的那样,一种方法是将代码添加到序言和结尾,但我不想编辑该方法,因为这会很耗时,并且编写相同的代码不是一个好习惯。

4

4 回答 4

4

我建议你看看 Codahale 的Metrics包。这个包收集各种指标(包括时间),然后通过 JMX 或其他机制报告。

于 2013-03-12T05:24:07.980 回答
2

为什么不直接使用分析器,例如YourKitJVisualVM。JVisualVM 随 JDK 一起提供。如果您真的想自己执行此操作,请使用java.lang.instrumentASM编写自己的代理。使用这种方法向 Java 方法的序言和结尾添加逻辑很简单。

这是一个帮助您入门的链接。

于 2013-03-12T05:19:58.837 回答
2

选项 1:: 使用 AOP

选项 2 :: 如果您在正确的位置(之前和之后)进行日志记录,并且在日志中输入时间戳,您可以使用任何分析工具(logrythm、splunk 的开源版本等)来处理你的日志并弄清楚时间。但是请记住,日志记录通常是一项昂贵的操作(嗯,AOP 在某种程度上也是如此)。

无论您采用哪种方法,请确保计算您将对应用程序施加的性能影响,只是为了衡量性能本身:-)。

于 2013-03-12T17:34:05.870 回答
1

看看Spring AOP,可以使用around通知来计算方法执行时间

春天 2.5

弹簧 3.0 x

于 2013-03-12T05:30:08.370 回答