PerformanceMetricsEvent.java
net.minecraft.client.telemetry.events.PerformanceMetricsEvent
信息
- 全限定名:net.minecraft.client.telemetry.events.PerformanceMetricsEvent
- 类型:public final class
- 包:net.minecraft.client.telemetry.events
- 源码路径:src/main/java/net/minecraft/client/telemetry/events/PerformanceMetricsEvent.java
- 起始行号:L13
- 继承:AggregatedTelemetryEvent
- 职责:
TODO
字段/常量
-
DEDICATED_MEMORY_KB- 类型:
long - 修饰符:
private static final - 源码定位:
L14 - 说明:
TODO
- 类型:
-
fpsSamples- 类型:
LongList - 修饰符:
private final - 源码定位:
L15 - 说明:
TODO
- 类型:
-
frameTimeSamples- 类型:
LongList - 修饰符:
private final - 源码定位:
L16 - 说明:
TODO
- 类型:
-
usedMemorySamples- 类型:
LongList - 修饰符:
private final - 源码定位:
L17 - 说明:
TODO
- 类型:
内部类/嵌套类型
- 无
构造器
- 无
方法
下面的方法块按源码顺序生成。
public void tick(TelemetryEventSender eventSender) @ L19
- 方法名:tick
- 源码定位:L19
- 返回类型:void
- 修饰符:public
参数:
- eventSender: TelemetryEventSender
说明:
TODO
private void resetValues() @ L26
- 方法名:resetValues
- 源码定位:L26
- 返回类型:void
- 修饰符:private
参数:
- 无
说明:
TODO
public void takeSample() @ L32
- 方法名:takeSample
- 源码定位:L32
- 返回类型:void
- 修饰符:public
参数:
- 无
说明:
TODO
private void takeUsedMemorySample() @ L39
- 方法名:takeUsedMemorySample
- 源码定位:L39
- 返回类型:void
- 修饰符:private
参数:
- 无
说明:
TODO
public void sendEvent(TelemetryEventSender eventSender) @ L46
- 方法名:sendEvent
- 源码定位:L46
- 返回类型:void
- 修饰符:public
参数:
- eventSender: TelemetryEventSender
说明:
TODO
private static long toKilobytes(long bytes) @ L59
- 方法名:toKilobytes
- 源码定位:L59
- 返回类型:long
- 修饰符:private static
参数:
- bytes: long
说明:
TODO
代码
@OnlyIn(Dist.CLIENT)
public final class PerformanceMetricsEvent extends AggregatedTelemetryEvent {
private static final long DEDICATED_MEMORY_KB = toKilobytes(Runtime.getRuntime().maxMemory());
private final LongList fpsSamples = new LongArrayList();
private final LongList frameTimeSamples = new LongArrayList();
private final LongList usedMemorySamples = new LongArrayList();
@Override
public void tick(TelemetryEventSender eventSender) {
if (Minecraft.getInstance().telemetryOptInExtra()) {
super.tick(eventSender);
}
}
private void resetValues() {
this.fpsSamples.clear();
this.frameTimeSamples.clear();
this.usedMemorySamples.clear();
}
@Override
public void takeSample() {
this.fpsSamples.add(Minecraft.getInstance().getFps());
this.takeUsedMemorySample();
this.frameTimeSamples.add(Minecraft.getInstance().getFrameTimeNs());
}
private void takeUsedMemorySample() {
long totalMemory = Runtime.getRuntime().totalMemory();
long freeMemory = Runtime.getRuntime().freeMemory();
long usedMemorySample = totalMemory - freeMemory;
this.usedMemorySamples.add(toKilobytes(usedMemorySample));
}
@Override
public void sendEvent(TelemetryEventSender eventSender) {
eventSender.send(TelemetryEventType.PERFORMANCE_METRICS, properties -> {
properties.put(TelemetryProperty.FRAME_RATE_SAMPLES, new LongArrayList(this.fpsSamples));
properties.put(TelemetryProperty.RENDER_TIME_SAMPLES, new LongArrayList(this.frameTimeSamples));
properties.put(TelemetryProperty.USED_MEMORY_SAMPLES, new LongArrayList(this.usedMemorySamples));
properties.put(TelemetryProperty.NUMBER_OF_SAMPLES, this.getSampleCount());
properties.put(TelemetryProperty.RENDER_DISTANCE, Minecraft.getInstance().options.getEffectiveRenderDistance());
properties.put(TelemetryProperty.DEDICATED_MEMORY_KB, (int)DEDICATED_MEMORY_KB);
});
this.resetValues();
}
private static long toKilobytes(long bytes) {
return bytes / 1000L;
}
}引用的其他类
-
- 引用位置:
方法调用 - 关联成员:
Minecraft.getInstance()
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
继承
- 引用位置: