衡量Java执行时间

时间:2013-07-13 00:06:10

标签: java duration measurement

我正在寻找可以衡量执行时间的“东西”,如果我的java代码。我知道我可以通过密集使用System.nanoTime()和类似的东西来做到这一点,但我需要更先进的东西。

这就是我想做的事情

gate.start("request");
gate.start("dbstuff");
doDbStuff();
gate.stop("dbstuff");
gate.start("businesslogic");
doSomeSimpleStuff();
for (int i = 0; i < 100; i++) {
  gate.start("complexeAlgorithm"); // sum the 100 cycles
  doComplexeAlgorithm();
  gate.stop("complexeAlgorithm");
}
gate.stop("businesslogic");
gate.stop("request");

输出应该是这样的

request 3.000 ms
+ dbstuff 700 ms
+ businesslogic 2.100 ms
  + complexeAlgorithm 300 ms
  + rest 1.800 ms
+ rest 200 ms

那个“东西”可能是一个框架或JVM工具或任何东西,这有助于我找到我的性能杀手。有什么建议吗?

2 个答案:

答案 0 :(得分:0)

查看https://github.com/codahale/metrics

Metrics是一个Java库,可让您无比深入地了解代码在生产中的作用。 度量标准提供了一个强大的工具包,用于衡量生产环境中关键组件的行为。

使用常见库的模块,如Jetty,Logback,Log4j,Apache HttpClient,Ehcache,JDBI,Jersey以及报告后端如Ganglia和Graphite,Metrics为您提供全栈可见性。

http://metrics.codahale.com/

答案 1 :(得分:0)

你要求一个分析器,最简单的一个是免费的:看看 jvisualvm ,它附带了java SDK。另一个选项是 Yourkit jprofiler

分析不是一个简单的主题,所以如果你在网络上搜索“java profiler”会更好。