2013-07-13 91 views
1

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

这里是我想要做的

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工具或任何东西,可以帮助我找到我的表演杀手。有什么建议么?

回答

0

你问了一个分析器,最简单的是自由的:看看jvisualvm,它自带了Java SDK。另一种选择是Yourkitjprofiler

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

0

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

指标是一个Java库,让你无与伦比的洞察你的代码确实在生产什么。度量标准提供了衡量生产环境中关键组件行为的强大工具包。使用通用库(如Jetty,Logback,Log4j,Apache HttpClient,Ehcache,JDBI,Jersey)和Ganglia和Graphite等报告后端的模块,度量标准为您提供了全栈可见性。

http://metrics.codahale.com/