HierarchicalTimingProfiler class
Пакет: com.hypixel.hytale.builtin.hytalegenerator.engine.performanceinstruments
Файл: com/hypixel/hytale/builtin/hytalegenerator/engine/performanceinstruments/HierarchicalTimingProfiler.java
Поля (13)
| Модификаторы | Тип | Имя |
|---|---|---|
|
NOT_STARTED,
STARTED, |
COMPLETED |
|
assert |
false |
|
private final String |
name |
|
private List<HierarchicalTimingProfiler.Probe> |
probes |
private |
int |
sampleCount |
|
private long |
startTime |
|
private HierarchicalTimingProfiler.Probe.State |
state |
|
private long |
totalTime_ns |
|
StringBuilder |
var1 |
|
HierarchicalTimingProfiler.Probe |
var2 |
|
long |
var3 |
|
StringBuilder |
var5 |
|
List |
var6 |
Методы (17)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
public |
Probepublic Probe(@Nonnull String var1) |
|
|
State State() |
|
public void |
addpublic void add(@Nonnull HierarchicalTimingProfiler.Probe var1) |
|
public HierarchicalTimingProfiler.Probe |
createProbepublic HierarchicalTimingProfiler.Probe createProbe(@Nonnull String var1) |
abstract |
|
for for(int var7 = 0; var7 < var6.size() |
abstract |
|
for for(int var2 = 0; var2 < this.probes.size() |
|
public String |
getNamepublic String getName() |
|
public List<HierarchicalTimingProfiler.Probe> |
getProbespublic List<HierarchicalTimingProfiler.Probe> getProbes() |
|
public long |
getTotalTime_nspublic long getTotalTime_ns() |
|
|
if if(var2) |
|
|
if if(this.totalProbe == null) |
|
|
if if(!var1) |
|
|
if if(!var1) |
|
public boolean |
isCompatibleForAdditionpublic boolean isCompatibleForAddition(@Nonnull HierarchicalTimingProfiler.Probe var1) |
|
public HierarchicalTimingProfiler.Probe |
startpublic HierarchicalTimingProfiler.Probe start(boolean var1) |
|
public HierarchicalTimingProfiler.Probe |
stoppublic HierarchicalTimingProfiler.Probe stop(boolean var1) |
public |
void |
takeSamplevoid takeSample(@Nonnull HierarchicalTimingProfiler.Probe var1, boolean var2) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.hytalegenerator.engine.performanceinstruments;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.LoggerUtil;
class="kw">import java.util.ArrayList;
class="kw">import java.util.List;
class="kw">import javax.annotation.Nonnull;
class="kw">public class HierarchicalTimingProfiler {
class="kw">private int sampleCount;
@Nonnull
class="kw">private HierarchicalTimingProfiler.Probe totalProbe;
class="kw">private String header;
class="kw">public HierarchicalTimingProfiler(@Nonnull String var1) {
this.header = var1;
this.sampleCount = 0;
this.totalProbe = null;
}
class="kw">public void takeSample(@Nonnull HierarchicalTimingProfiler.Probe var1, boolean var2) {
if (var2) {
if (this.totalProbe == null) {
this.totalProbe = var1;
this.sampleCount++;
} else if (!var1.isCompatibleForAddition(this.totalProbe)) {
LoggerUtil.getLogger().warning("Discarded a probe because of mismatched structures.");
assert false;
} else {
this.sampleCount++;
this.totalProbe.add(var1);
}
}
}
@Nonnull
@Override
class="kw">public String toString() {
StringBuilder var1 = new StringBuilder();
var1.append("Performance Report\n");
var1.append("Sample Count: ").append(this.sampleCount).append("\n");
var1.append(this.header).append("\n");
var1.append(this.toString(0, this.totalProbe));
class="kw">return var1.toString();
}
@Nonnull
class="kw">private String toString(int var1, @Nonnull HierarchicalTimingProfiler.Probe var2) {
long var3 = var2.getTotalTime_ns() / this.sampleCount;
StringBuilder var5 = new StringBuilder();
var5.append("\t".repeat(var1));
var5.append(var2.getName()).append(": ");
var5.append(LoggerUtil.nsToMsDecimal(var3)).append(" ms");
var5.append("\n");
List var6 = var2.getProbes();
for (int var7 = 0; var7 < var6.size(); var7++) {
var5.append(this.toString(var1 + 1, var6.get(var7)));
}
class="kw">return var5.toString();
}
class="kw">public class="kw">static class Probe {
@Nonnull
class="kw">private class="kw">final String name;
class="kw">private long startTime;
class="kw">private long totalTime_ns;
class="kw">private HierarchicalTimingProfiler.Probe.State state;
class="kw">private List<HierarchicalTimingProfiler.Probe> probes;
class="kw">public Probe(@Nonnull String var1) {
this.name = var1;
this.state = HierarchicalTimingProfiler.Probe.State.NOT_STARTED;
this.probes = new ArrayList<>(1);
}
@Nonnull
class="kw">public HierarchicalTimingProfiler.Probe start(boolean var1) {
if (!var1) {
class="kw">return this;
}
this.startTime = System.nanoTime();
this.state = HierarchicalTimingProfiler.Probe.State.STARTED;
class="kw">return this;
}
@Nonnull
class="kw">public HierarchicalTimingProfiler.Probe stop(boolean var1) {
if (!var1) {
class="kw">return this;
}
assert this.state == HierarchicalTimingProfiler.Probe.State.STARTED;
this.state = HierarchicalTimingProfiler.Probe.State.COMPLETED;
this.totalTime_ns = System.nanoTime() - this.startTime;
class="kw">return this;
}
class="kw">public long getTotalTime_ns() {
assert this.state == HierarchicalTimingProfiler.Probe.State.COMPLETED;
class="kw">return this.totalTime_ns;
}
@Nonnull
class="kw">public String getName() {
class="kw">return this.name;
}
@Nonnull
class="kw">public List<HierarchicalTimingProfiler.Probe> getProbes() {
class="kw">return this.probes;
}
@Nonnull
class="kw">public HierarchicalTimingProfiler.Probe createProbe(@Nonnull String var1) {
HierarchicalTimingProfiler.Probe var2 = new HierarchicalTimingProfiler.Probe(var1);
this.probes.add(var2);
class="kw">return var2;
}
class="kw">public boolean isCompatibleForAddition(@Nonnull HierarchicalTimingProfiler.Probe var1) {
if (this.probes.size() == var1.probes.size() && this.name.equals(var1.name)) {
for (int var2 = 0; var2 < this.probes.size(); var2++) {
if (!this.probes.get(var2).isCompatibleForAddition(var1.probes.get(var2))) {
class="kw">return false;
}
}
class="kw">return true;
} else {
class="kw">return false;
}
}
class="kw">public void add(@Nonnull HierarchicalTimingProfiler.Probe var1) {
assert this.state == HierarchicalTimingProfiler.Probe.State.COMPLETED;
assert this.isCompatibleForAddition(var1);
this.totalTime_ns = this.totalTime_ns + var1.getTotalTime_ns();
for (int var2 = 0; var2 < this.probes.size(); var2++) {
this.probes.get(var2).add(var1.probes.get(var2));
}
}
class="kw">private enum State {
NOT_STARTED,
STARTED,
COMPLETED;
State() {
}
}
}
}