为什么 MicroMeter Timer returns 归零?
Why does MicroMeter Timer returns zero?
考虑以下代码:
public static void main(String[] args) {
Timer timer = Metrics.timer("item.processing");
for (int i = 0; i < 100; i++) {
timer.record(i, TimeUnit.SECONDS);
}
System.out.println(timer.count());
System.out.println(timer.mean(TimeUnit.SECONDS));
}
两次打印的输出都是零,但当然应该是正数。
我正在使用 globalRegistry
,但我认为这不会有什么不同。
您看到当前结果的原因是您尚未注册具体的注册表实施。 Micrometer 的默认设置没有定义支持的注册表实现。因此,您的 Timer 值只是被丢弃在地板上而不是保留。
将此行添加为 main() 的第一行,您将开始获得预期的行为:
Metrics.addRegistry(new SimpleMeterRegistry());
像这样:
public static void main(String ...args) {
Metrics.addRegistry(new SimpleMeterRegistry());
Timer timer = Metrics.timer("item.processing");
for (int i = 0; i < 100; i++) {
timer.record(i, TimeUnit.SECONDS);
}
System.out.println(timer.count());
System.out.println(timer.mean(TimeUnit.SECONDS));
}
给出结果:
100
49.5
考虑以下代码:
public static void main(String[] args) {
Timer timer = Metrics.timer("item.processing");
for (int i = 0; i < 100; i++) {
timer.record(i, TimeUnit.SECONDS);
}
System.out.println(timer.count());
System.out.println(timer.mean(TimeUnit.SECONDS));
}
两次打印的输出都是零,但当然应该是正数。
我正在使用 globalRegistry
,但我认为这不会有什么不同。
您看到当前结果的原因是您尚未注册具体的注册表实施。 Micrometer 的默认设置没有定义支持的注册表实现。因此,您的 Timer 值只是被丢弃在地板上而不是保留。
将此行添加为 main() 的第一行,您将开始获得预期的行为:
Metrics.addRegistry(new SimpleMeterRegistry());
像这样:
public static void main(String ...args) {
Metrics.addRegistry(new SimpleMeterRegistry());
Timer timer = Metrics.timer("item.processing");
for (int i = 0; i < 100; i++) {
timer.record(i, TimeUnit.SECONDS);
}
System.out.println(timer.count());
System.out.println(timer.mean(TimeUnit.SECONDS));
}
给出结果:
100
49.5