Code/net/minecraft/util/profiling/SingleTickProfiler.java

50 lines
1.8 KiB
Java
Raw Permalink Normal View History

2025-07-01 06:20:03 +00:00
package net.minecraft.util.profiling;
import com.mojang.logging.LogUtils;
import java.io.File;
import java.util.function.LongSupplier;
import javax.annotation.Nullable;
import net.minecraft.Util;
import org.slf4j.Logger;
public class SingleTickProfiler {
private static final Logger LOGGER = LogUtils.getLogger();
private final LongSupplier realTime;
private final long saveThreshold;
private int tick;
private final File location;
private ProfileCollector profiler = InactiveProfiler.INSTANCE;
public SingleTickProfiler(LongSupplier p_145963_, String p_145964_, long p_145965_) {
this.realTime = p_145963_;
this.location = new File("debug", p_145964_);
this.saveThreshold = p_145965_;
}
public ProfilerFiller startTick() {
this.profiler = new ActiveProfiler(this.realTime, () -> this.tick, () -> true);
this.tick++;
return this.profiler;
}
public void endTick() {
if (this.profiler != InactiveProfiler.INSTANCE) {
ProfileResults profileresults = this.profiler.getResults();
this.profiler = InactiveProfiler.INSTANCE;
if (profileresults.getNanoDuration() >= this.saveThreshold) {
File file1 = new File(this.location, "tick-results-" + Util.getFilenameFormattedDateTime() + ".txt");
profileresults.saveResults(file1.toPath());
LOGGER.info("Recorded long tick -- wrote info to: {}", file1.getAbsolutePath());
}
}
}
@Nullable
public static SingleTickProfiler createTickProfiler(String p_18633_) {
return null;
}
public static ProfilerFiller decorateFiller(ProfilerFiller p_18630_, @Nullable SingleTickProfiler p_18631_) {
return p_18631_ != null ? ProfilerFiller.combine(p_18631_.startTick(), p_18630_) : p_18630_;
}
}