是否可以使用同一个JAMon监视器类监视不同的处理步骤?例如,在代码示例中,我想测量"Point1“和"Point2”的执行时间。但是,该示例只返回有关第二步的统计信息。当然,我可以创建几个类型为Monitor的对象。但也许有一种更干净的方法?
Monitor mon = null;
for(int i =0; i < 1000; i++){
//Part1
mon = MonitorFactory.start("Point 1");
Thread.sleep(2);
mon.stop();
//Part2
mon = MonitorFactory.start("Point 2");
mon.stop();
}
System.out.println(mon.toString());输出:
JAMon Label=Point 2,Units=ms. (LastValue=0.0,Hits=1000.0,Avg=0.001,Total=1.0,Min=0.0,Max=1.0,Active=0.0,Avg Active=1.0,Max Active=1.0,First Access=Wed Jun 17 :40:44 CEST 2015,LastAccess=Wed Jun 17 10:40:46 CEST 2015)
期望产出:
JAMon Label=Point 1,Units=ms. (LastValue=0.0,Hits=1000.0,Avg=0.001,Total=1.0,Min=0.0,Max=1.0,Active=0.0,Avg Active=1.0,Max Active=1.0,First Access=Wed Jun 17 :40:44 CEST 2015,LastAccess=Wed Jun 17 10:40:46 CEST 2015) JAMon Label=Point 2,Units=ms. (LastValue=0.0,Hits=1000.0,Avg=0.001,Total=1.0,Min=0.0,Max=1.0,Active=0.0,Avg Active=1.0,Max Active=1.0,First Access=Wed Jun 17 :40:44 CEST 2015,LastAccess=Wed Jun 17 10:40:46 CEST 2015)
发布于 2015-07-16 07:30:25
可以将监视器toString()调用更改为显式getMonitor(.)打电话。
Monitor mon = null;
for(int i =0; i < 1000; i++){
//Part1
mon = MonitorFactory.start("Point 1");
Thread.sleep(2);
mon.stop();
//Part2
mon = MonitorFactory.start("Point 2");
mon.stop();
}
System.out.println(MonitorFactory.getMonitor("Point 1").toString());
System.out.println(MonitorFactory.getMonitor("Point 2").toString());或者你可以创建2个监视器。
Monitor mon1 = null;
Monitor mon2 = null;
for(int i =0; i < 1000; i++){
//Part1
mon1 = MonitorFactory.start("Point 1");
Thread.sleep(2);
mon1.stop();
//Part2
mon2 = MonitorFactory.start("Point 2");
mon2.stop();
}
System.out.println(mon1.toString());
System.out.println(mon2.toString());发布于 2015-11-27 15:02:26
有一个比另一个答案更好的方法:
for( Object monitor: MonitorFactory.getMap().values() ){
System.out.println( monitor );
}这将打印所有使用的显示器,直到现在。所有的线索。这正是你想要的。
您可以检查已完成的代码示例和输出这里。
https://stackoverflow.com/questions/30886663
复制相似问题