2013-03-12 87 views
4

我想在java中打印方法的执行时间。目前正在使用下面的代码,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

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

+0

如果你想要性能日志使用perf4j @ http://perf4j.codehaus.org/ – 2013-03-12 05:24:32

回答

2

为什么不使用探查器,如YourKitJVisualVM。 JVisualVM附带JDK。如果你真的想自己做,使用java.lang.instrumentASM来编写你自己的代理。使用这种方法将逻辑添加到Java方法的序言和结尾很简单。

这里有一个链接可以帮到你started

+0

你可以请添加一个示例? – 2013-03-12 05:22:03

+0

添加链接以帮助演示 – 2013-03-12 05:24:22

+0

如何通过VisualVM在java中获取方法的执行时间? – okwap 2014-11-13 08:03:57

4

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

2

选项1 ::使用AOP

选项2 ::如果您在正确的位置登录(之前的&),并在日志中输入时间戳,则可以使用任何分析工具(logrythm,splunk的open s我们的版本等),只是紧缩你的日志,并找出时间。但是请记住,日志记录通常是一项昂贵的操作(在某种程度上,AOP也是如此)。

无论采用哪种方法,都要确保计算您将要放在应用程序上的性能影响,以便衡量性能本身:-)。