我试图获取函数调用已花费的时间,并将它们放在JMX端口上。我发现yammer适合于此。尽管计数器很简单,但使用计时器却令人困惑。

 private Timer executeTimer;
 TimerContext timerContext;
 obj.timerContext = obj.executeTimer.time();
 .
 .
 .
 public void f()
   {
      //start timer
      f2();
      //stop timer
      //display time difference
   }


我知道对于某些人来说这看起来太琐碎了,请忍受。我对yammer并不陌生,发现它使使用哪个函数和哪个类感到困惑。另外,如果您可以告诉我何时使用TimerContext以及何时使用Timer,那将非常有帮助。

最佳答案

首先,您需要初始化ExecuteTimer实例。

executeTimer=Metrics.newTimer(CLASSNAME.class, "Metrics_Name", TimeUnit.MILLISECONDS,TimeUnit.SECONDS);


之后,请按照以下步骤操作:

 private Timer executeTimer;
 TimerContext timerContext;
 obj.timerContext = obj.executeTimer.time();
 .
 .
 .
 public void f()
   {
       timerContext = executeTimer.time();//start timer
       f2();
       timerContext.stop();//stop timer
       //All stats are sent to JMX port by default. You can open console to view them
   }


为了更深入地了解这些东西,这里是实际的代码。

https://github.com/dropwizard/metrics/blob/master/metrics-core/src/main/java/com/codahale/metrics/Timer.java

关于java - 获取在Yammer耗时,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30498457/

10-10 12:39