方法在java中的执行时间

时间:2013-03-12 05:19:08

标签: java performance spring

我想在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 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:2)

为什么不使用分析器,例如YourKitJVisualVM。 JVisualVM随JDK一起提供。如果您确实想自己这样做,请使用java.lang.instrumentASM编写您自己的代理。使用这种方法将逻辑添加到Java方法的序言和结尾是很简单的。

以下是获取started的链接。

答案 2 :(得分:2)

选项1 ::使用AOP

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

无论您采取哪种方法,请务必考虑您为应用程序提供的性能影响,以便衡量性能本身: - )。

答案 3 :(得分:1)

看看Spring AOP,您可以使用around建议来计算方法执行时间

Spring 2.5

Spring 3.0 x