Probe class
Пакет: com.hypixel.hytale.builtin.hytalegenerator.engine.performanceinstruments
Файл: com/hypixel/hytale/builtin/hytalegenerator/engine/performanceinstruments/FlatTimingProfiler.java
Поля (6)
| Модификаторы | Тип | Имя |
|---|---|---|
|
boolean |
hasStart |
|
String |
label |
|
long |
max |
|
long |
min |
|
long |
start |
|
long |
total |
Методы (1)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
void |
clearvoid clear() |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.hytalegenerator.engine.performanceinstruments;
class="kw">import java.math.BigDecimal;
class="kw">import javax.annotation.Nonnull;
class="kw">public class FlatTimingProfiler {
@Nonnull
class="kw">private class="kw">final FlatTimingProfiler.Probe[] probes;
class="kw">private long sampleCount;
class="kw">public FlatTimingProfiler(int var1) {
this.probes = new FlatTimingProfiler.Probe[var1];
for (int var2 = 0; var2 < var1; var2++) {
this.probes[var2] = new FlatTimingProfiler.Probe();
this.probes[var2].label = Integer.toString(var2);
}
this.sampleCount = 0L;
}
@Nonnull
class="kw">private class="kw">static String toString_ms(long var0) {
class="kw">return BigDecimal.valueOf(var0 / 1000000.0).toString();
}
class="kw">public void setProbeLabel(int var1, @Nonnull String var2) {
assert this.isValid(var1);
this.probes[var1].label = var2;
}
class="kw">public void start(int var1) {
assert this.isValid(var1);
assert !this.probes[var1].hasStart;
this.probes[var1].start = System.nanoTime();
this.probes[var1].hasStart = true;
}
class="kw">public void stop(int var1) {
assert this.isValid(var1);
assert this.probes[var1].hasStart;
long var2 = System.nanoTime() - this.probes[var1].start;
this.probes[var1].total += var2;
this.probes[var1].max = Math.max(this.probes[var1].max, var2);
this.probes[var1].min = Math.min(this.probes[var1].min, var2);
this.probes[var1].hasStart = false;
}
class="kw">public void save() {
assert this.isAllProbesStopped();
this.sampleCount++;
}
class="kw">public long getTotal_ns(int var1) {
assert this.isValid(var1);
assert this.isAllProbesStopped();
class="kw">return this.probes[var1].total;
}
class="kw">public long getMin_ns(int var1) {
assert this.isValid(var1);
assert this.isAllProbesStopped();
class="kw">return this.probes[var1].min;
}
class="kw">public long getMax_ns(int var1) {
assert this.isValid(var1);
assert this.isAllProbesStopped();
class="kw">return this.probes[var1].max;
}
class="kw">public long getAverage_ns(int var1) {
assert this.isValid(var1);
assert this.isAllProbesStopped();
class="kw">return this.probes[var1].total / this.sampleCount;
}
class="kw">public long getSampleCount() {
class="kw">return this.sampleCount;
}
class="kw">public void clear() {
assert this.isAllProbesStopped();
this.sampleCount = 0L;
for (FlatTimingProfiler.Probe var4 : this.probes) {
var4.clear();
}
}
class="kw">public boolean isValid(int var1) {
class="kw">return var1 >= 0 && var1 < this.probes.length;
}
class="kw">public boolean isAllProbesStopped() {
for (FlatTimingProfiler.Probe var4 : this.probes) {
if (var4.hasStart) {
class="kw">return false;
}
}
class="kw">return true;
}
@Nonnull
class="kw">public String toString(@Nonnull String var1) {
String var2 = var1 + " :";
var2 = var2 + "\n\tSample Count : " + this.sampleCount;
for (FlatTimingProfiler.Probe var6 : this.probes) {
var2 = var2 + "\n\t\t" + var6.label + " :";
var2 = var2 + "\n\t\t\tAverage : " + this.getAverage_ns(var6) + " ns / " + toString_ms(this.getAverage_ns(var6)) + " ms";
var2 = var2 + "\n\t\t\tMax : " + var6.max + " ns / " + toString_ms(var6.max) + " ms";
var2 = var2 + "\n\t\t\tMin : " + var6.min + " ns / " + toString_ms(var6.min) + " ms";
}
class="kw">return var2;
}
class="kw">private long getAverage_ns(@Nonnull FlatTimingProfiler.Probe var1) {
class="kw">return var1.total / this.sampleCount;
}
class="kw">private class="kw">static class Probe {
@Nonnull
String label = "";
boolean hasStart = false;
long start = 0L;
long total = 0L;
long max = Long.MIN_VALUE;
long min = Long.MAX_VALUE;
class="kw">private Probe() {
}
void clear() {
this.total = 0L;
this.max = Long.MIN_VALUE;
this.min = Long.MAX_VALUE;
}
}
}