TracyZoneFiller.java
net.minecraft.util.profiling.TracyZoneFiller
信息
- 全限定名:net.minecraft.util.profiling.TracyZoneFiller
- 类型:public class
- 包:net.minecraft.util.profiling
- 源码路径:src/main/java/net/minecraft/util/profiling/TracyZoneFiller.java
- 起始行号:L19
- 实现:ProfilerFiller
- 职责:
TODO
字段/常量
-
LOGGER- 类型:
Logger - 修饰符:
private static final - 源码定位:
L20 - 说明:
TODO
- 类型:
-
STACK_WALKER- 类型:
StackWalker - 修饰符:
private static final - 源码定位:
L21 - 说明:
TODO
- 类型:
-
activeZones- 类型:
List<com.mojang.jtracy.Zone> - 修饰符:
private final - 源码定位:
L22 - 说明:
TODO
- 类型:
-
plots- 类型:
Map<String,TracyZoneFiller.PlotAndValue> - 修饰符:
private final - 源码定位:
L23 - 说明:
TODO
- 类型:
-
name- 类型:
String - 修饰符:
private final - 源码定位:
L24 - 说明:
TODO
- 类型:
内部类/嵌套类型
net.minecraft.util.profiling.TracyZoneFiller.PlotAndValue- 类型:
class - 修饰符:
private static final - 源码定位:
L122 - 说明:
TODO
- 类型:
构造器
- 无
方法
下面的方法块按源码顺序生成。
public void startTick() @ L26
- 方法名:startTick
- 源码定位:L26
- 返回类型:void
- 修饰符:public
参数:
- 无
说明:
TODO
public void endTick() @ L30
- 方法名:endTick
- 源码定位:L30
- 返回类型:void
- 修饰符:public
参数:
- 无
说明:
TODO
public void push(String name) @ L37
- 方法名:push
- 源码定位:L37
- 返回类型:void
- 修饰符:public
参数:
- name: String
说明:
TODO
public void push(Supplier<String> name) @ L62
- 方法名:push
- 源码定位:L62
- 返回类型:void
- 修饰符:public
参数:
- name: Supplier
说明:
TODO
public void pop() @ L67
- 方法名:pop
- 源码定位:L67
- 返回类型:void
- 修饰符:public
参数:
- 无
说明:
TODO
public void popPush(String name) @ L77
- 方法名:popPush
- 源码定位:L77
- 返回类型:void
- 修饰符:public
参数:
- name: String
说明:
TODO
public void popPush(Supplier<String> name) @ L83
- 方法名:popPush
- 源码定位:L83
- 返回类型:void
- 修饰符:public
参数:
- name: Supplier
说明:
TODO
public void markForCharting(MetricCategory category) @ L89
- 方法名:markForCharting
- 源码定位:L89
- 返回类型:void
- 修饰符:public
参数:
- category: MetricCategory
说明:
TODO
public void incrementCounter(String name, int amount) @ L93
- 方法名:incrementCounter
- 源码定位:L93
- 返回类型:void
- 修饰符:public
参数:
- name: String
- amount: int
说明:
TODO
public void incrementCounter(Supplier<String> name, int amount) @ L98
- 方法名:incrementCounter
- 源码定位:L98
- 返回类型:void
- 修饰符:public
参数:
- name: Supplier
- amount: int
说明:
TODO
private com.mojang.jtracy.Zone activeZone() @ L103
- 方法名:activeZone
- 源码定位:L103
- 返回类型:com.mojang.jtracy.Zone
- 修饰符:private
参数:
- 无
说明:
TODO
public void addZoneText(String text) @ L107
- 方法名:addZoneText
- 源码定位:L107
- 返回类型:void
- 修饰符:public
参数:
- text: String
说明:
TODO
public void addZoneValue(long value) @ L112
- 方法名:addZoneValue
- 源码定位:L112
- 返回类型:void
- 修饰符:public
参数:
- value: long
说明:
TODO
public void setZoneColor(int color) @ L117
- 方法名:setZoneColor
- 源码定位:L117
- 返回类型:void
- 修饰符:public
参数:
- color: int
说明:
TODO
代码
public class TracyZoneFiller implements ProfilerFiller {
private static final Logger LOGGER = LogUtils.getLogger();
private static final StackWalker STACK_WALKER = StackWalker.getInstance(Set.of(Option.RETAIN_CLASS_REFERENCE), 5);
private final List<com.mojang.jtracy.Zone> activeZones = new ArrayList<>();
private final Map<String, TracyZoneFiller.PlotAndValue> plots = new HashMap<>();
private final String name = Thread.currentThread().getName();
@Override
public void startTick() {
}
@Override
public void endTick() {
for (TracyZoneFiller.PlotAndValue plotAndValue : this.plots.values()) {
plotAndValue.set(0);
}
}
@Override
public void push(String name) {
String function = "";
String file = "";
int line = 0;
if (SharedConstants.IS_RUNNING_IN_IDE) {
Optional<StackFrame> result = STACK_WALKER.walk(
s -> s.filter(
framex -> framex.getDeclaringClass() != TracyZoneFiller.class
&& framex.getDeclaringClass() != ProfilerFiller.CombinedProfileFiller.class
)
.findFirst()
);
if (result.isPresent()) {
StackFrame frame = result.get();
function = frame.getMethodName();
file = frame.getFileName();
line = frame.getLineNumber();
}
}
com.mojang.jtracy.Zone zone = TracyClient.beginZone(name, function, file, line);
this.activeZones.add(zone);
}
@Override
public void push(Supplier<String> name) {
this.push(name.get());
}
@Override
public void pop() {
if (this.activeZones.isEmpty()) {
LOGGER.error("Tried to pop one too many times! Mismatched push() and pop()?");
} else {
com.mojang.jtracy.Zone zone = this.activeZones.removeLast();
zone.close();
}
}
@Override
public void popPush(String name) {
this.pop();
this.push(name);
}
@Override
public void popPush(Supplier<String> name) {
this.pop();
this.push(name.get());
}
@Override
public void markForCharting(MetricCategory category) {
}
@Override
public void incrementCounter(String name, int amount) {
this.plots.computeIfAbsent(name, s -> new TracyZoneFiller.PlotAndValue(this.name + " " + name)).add(amount);
}
@Override
public void incrementCounter(Supplier<String> name, int amount) {
this.incrementCounter(name.get(), amount);
}
private com.mojang.jtracy.Zone activeZone() {
return this.activeZones.getLast();
}
@Override
public void addZoneText(String text) {
this.activeZone().addText(text);
}
@Override
public void addZoneValue(long value) {
this.activeZone().addValue(value);
}
@Override
public void setZoneColor(int color) {
this.activeZone().setColor(color);
}
private static final class PlotAndValue {
private final Plot plot;
private int value;
private PlotAndValue(String name) {
this.plot = TracyClient.createPlot(name);
this.value = 0;
}
void set(int value) {
this.value = value;
this.plot.setValue(value);
}
void add(int amount) {
this.set(this.value + amount);
}
}
}引用的其他类
-
- 引用位置:
实现
- 引用位置:
-
- 引用位置:
字段/返回值
- 引用位置:
-
- 引用位置:
参数
- 引用位置: