AbstractBenchmarkCommand class
Пакет: com.hypixel.hytale.builtin.triggervolumes.command.benchmark
Файл: com/hypixel/hytale/builtin/triggervolumes/command/benchmark/AbstractBenchmarkCommand.java
extends: AbstractWorldCommand
Поля (19)
| Модификаторы | Тип | Имя |
|---|---|---|
final |
String |
BENCH_PREFIX |
|
ArrayList |
var1 |
|
int |
var10 |
|
double |
var10 |
|
HistoricMetric |
var11 |
|
long |
var12 |
|
double |
var12 |
|
double |
var14 |
|
double |
var14 |
|
int |
var16 |
|
TriggerVolumeManager |
var4 |
|
Ref |
var5 |
|
BoxShape |
var5 |
|
TransformComponent |
var6 |
|
VolumeEntry |
var6 |
|
Vector3d |
var7 |
|
int |
var8 |
|
double |
var8 |
|
int |
var9 |
Методы (9)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
static |
int |
cleanupBenchmarkVolumesint cleanupBenchmarkVolumes(@Nonnull TriggerVolumeManager var0) |
abstract |
|
cleanupBenchmarkVolumes cleanupBenchmarkVolumes(var4) |
|
|
for for(String var5 : var1) |
|
|
if if(var4 != null) |
|
|
if if(var6 != null) |
static |
double |
round2double round2(double var0) |
static |
void |
spawnBoxvoid spawnBox(@Nonnull TriggerVolumeManager var0, @Nonnull World var1, @Nonnull String var2, @Nonnull Vector3d var3, int var4) |
abstract abstract |
int |
spawnVolumesint spawnVolumes(@Nonnull CommandContext var1, @Nonnull TriggerVolumeManager var2, @Nonnull World var3, @Nonnull Vector3d var4, int var5, int var6) |
abstract |
|
super super(var1, var2) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.triggervolumes.command.benchmark;
class="kw">import com.hypixel.hytale.builtin.triggervolumes.EntityTargetType;
class="kw">import com.hypixel.hytale.builtin.triggervolumes.TriggerVolumesPlugin;
class="kw">import com.hypixel.hytale.builtin.triggervolumes.manager.TriggerVolumeManager;
class="kw">import com.hypixel.hytale.builtin.triggervolumes.manager.VolumeEntry;
class="kw">import com.hypixel.hytale.builtin.triggervolumes.shape.BoxShape;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.metrics.metric.HistoricMetric;
class="kw">import com.hypixel.hytale.server.core.Message;
class="kw">import com.hypixel.hytale.server.core.command.system.CommandContext;
class="kw">import com.hypixel.hytale.server.core.command.system.arguments.system.DefaultArg;
class="kw">import com.hypixel.hytale.server.core.command.system.arguments.system.RequiredArg;
class="kw">import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
class="kw">import com.hypixel.hytale.server.core.command.system.basecommands.AbstractWorldCommand;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.TransformComponent;
class="kw">import com.hypixel.hytale.server.core.universe.world.World;
class="kw">import com.hypixel.hytale.server.core.universe.world.commands.world.perf.WorldPerfCommand;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import java.util.ArrayList;
class="kw">import java.util.EnumSet;
class="kw">import java.util.Locale;
class="kw">import java.util.concurrent.CompletableFuture;
class="kw">import java.util.concurrent.TimeUnit;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.joml.Vector3d;
class="kw">public class="kw">abstract class AbstractBenchmarkCommand class="kw">extends AbstractWorldCommand {
class="kw">static class="kw">final String BENCH_PREFIX = "tvbench_";
class="kw">private class="kw">static class="kw">final int MIN_SECONDS = 10;
@Nonnull
class="kw">protected class="kw">final RequiredArg<Integer> countArg = this.withRequiredArg("count", "server.commands.triggervolume.benchmark.count.desc", ArgTypes.INTEGER);
@Nonnull
class="kw">private class="kw">final DefaultArg<Integer> sizeArg = this.withDefaultArg("size", "server.commands.triggervolume.benchmark.size.desc", ArgTypes.INTEGER, 3, "3");
@Nonnull
class="kw">private class="kw">final DefaultArg<Integer> secondsArg = this.withDefaultArg(
"seconds", "server.commands.triggervolume.benchmark.seconds.desc", ArgTypes.INTEGER, 12, "12"
);
class="kw">protected AbstractBenchmarkCommand(@Nonnull String var1, @Nonnull String var2) {
super(var1, var2);
}
@Override
class="kw">protected class="kw">final void execute(@Nonnull CommandContext var1, @Nonnull World var2, @Nonnull Store<EntityStore> var3) {
TriggerVolumeManager var4 = var3.getResource(TriggerVolumesPlugin.get().getManagerResourceType());
if (var4 != null) {
Ref var5 = var1.senderAsPlayerRef();
if (var5 != null && var5.isValid()) {
TransformComponent var6 = var3.getComponent(var5, TransformComponent.getComponentType());
if (var6 != null) {
Vector3d var7 = new Vector3d(var6.getPosition());
int var8 = Math.max(0, this.countArg.get(var1));
int var9 = Math.max(1, this.sizeArg.get(var1));
int var10 = Math.max(10, this.secondsArg.get(var1));
HistoricMetric var11 = var2.getBufferedTickLengthMetricSet();
long var12 = var2.getTickStepNanos();
double var14 = var11.getAverage(0);
int var16 = this.spawnVolumes(var1, var4, var2, var7, var8, var9);
var1.sendMessage(Message.translation("server.commands.triggervolume.benchmark.started").param("count", var16).param("seconds", var10));
CompletableFuture.runAsync(
() -> {
double var8 = var11.getAverage(0);
double var10 = WorldPerfCommand.tpsFromDelta(var14, var12);
double var12 = WorldPerfCommand.tpsFromDelta(var8, var12);
double var14 = var10 > 0.0 ? (var10 - var12) / var10 * 100.0 : 0.0;
var1.sendMessage(
Message.translation("server.commands.triggervolume.benchmark.result")
.param("baselineTps", round2(var10))
.param("loadedTps", round2(var12))
.param("baselineMs", round2(var14 / 1000000.0))
.param("loadedMs", round2(var8 / 1000000.0))
.param("deltaMs", round2((var8 - var14) / 1000000.0))
.param("dropPercent", round2(var14))
.param("count", var16)
);
cleanupBenchmarkVolumes(var4);
},
CompletableFuture.delayedExecutor(var10, TimeUnit.SECONDS, var2)
);
}
}
}
}
class="kw">protected class="kw">abstract int spawnVolumes(
@Nonnull CommandContext var1, @Nonnull TriggerVolumeManager var2, @Nonnull World var3, @Nonnull Vector3d var4, int var5, int var6
);
class="kw">protected class="kw">static void spawnBox(@Nonnull TriggerVolumeManager var0, @Nonnull World var1, @Nonnull String var2, @Nonnull Vector3d var3, int var4) {
BoxShape var5 = new BoxShape(new Vector3d(-var4, -var4, -var4), new Vector3d(var4, var4, var4));
VolumeEntry var6 = new VolumeEntry(
var2, var1.getName().toLowerCase(Locale.ROOT), var3, var5, new ArrayList<>(), EnumSet.of(EntityTargetType.PLAYER), true
);
var0.register(var2, var6);
}
class="kw">static int cleanupBenchmarkVolumes(@Nonnull TriggerVolumeManager var0) {
ArrayList var1 = new ArrayList<>();
for (String var3 : var0.getVolumesMap().keySet()) {
if (var3.startsWith("tvbench_")) {
var1.add(var3);
}
}
for (String var5 : var1) {
var0.unregister(var5);
var0.notifyViewersRemove(var5);
}
class="kw">return var1.size();
}
class="kw">private class="kw">static double round2(double var0) {
class="kw">return Math.round(var0 * 100.0) / 100.0;
}
}