1

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

4

2 回答 2

0

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

Metrics 是一个 Java 库,可让您对代码在生产中的作用拥有无与伦比的洞察力。Metrics 提供了一个强大的工具包,用于衡量生产环境中关键组件的行为。

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

http://metrics.codahale.com/

于 2013-07-13T00:09:22.057 回答
0

您需要一个分析器,最简单的一个是免费的:看看jvisualvm,它带有 java SDK。另一个选项是Yourkitjprofiler

剖析不是一个简单的话题,所以最好在网上搜索“java profiler”。

于 2013-07-13T00:10:11.417 回答