NPCBenchmarkCommand class

Пакет: com.hypixel.hytale.server.npc.commands

Файл: com/hypixel/hytale/server/npc/commands/NPCBenchmarkCommand.java

extends: CommandBase

Поля (15)

МодификаторыТипИмя
SensorSupportBenchmark var10
int var12
double var2
boolean var4
var4
var4
var4
Formatter var5
Formatter var5
TimeDistributionRecorder var6
IntArrayList var6
IntArrayList var7
SensorSupportBenchmark var7
int var9
int var9

Методы (8)

МодификаторыВозвратСигнатура
abstract for for(int var8 = 0; var8 < var7.size()
abstract for for(int var8 = 0; var8 < var6.size()
abstract for for(int var11 = 0; var11 < var6.size()
if if(var4)
static void logRoleDistributionvoid logRoleDistribution(@Nonnull TimeDistributionRecorder var0, @Nonnull StringBuilder var1, @Nonnull Formatter var2, @Nonnull String var3)
static void logSensorSupportLoSvoid logSensorSupportLoS(@Nonnull SensorSupportBenchmark var0, @Nonnull StringBuilder var1, @Nonnull Formatter var2, @Nonnull String var3)
static void logSensorSupportUpdateTimevoid logSensorSupportUpdateTime(@Nonnull SensorSupportBenchmark var0, @Nonnull StringBuilder var1, @Nonnull Formatter var2, @Nonnull String var3)
abstract super super("benchmark", "server.commands.npc.benchmark.desc")

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.server.npc.commands;

class="kw">import com.hypixel.hytale.codec.validation.Validators;
class="kw">import com.hypixel.hytale.common.benchmark.TimeDistributionRecorder;
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.FlagArg;
class="kw">import com.hypixel.hytale.server.core.command.system.arguments.system.OptionalArg;
class="kw">import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
class="kw">import com.hypixel.hytale.server.core.command.system.basecommands.CommandBase;
class="kw">import com.hypixel.hytale.server.npc.NPCPlugin;
class="kw">import com.hypixel.hytale.server.npc.util.SensorSupportBenchmark;
class="kw">import it.unimi.dsi.fastutil.ints.IntArrayList;
class="kw">import java.util.Formatter;
class="kw">import java.util.logging.Level;
class="kw">import javax.annotation.Nonnull;

class="kw">public class NPCBenchmarkCommand class="kw">extends CommandBase {
   @Nonnull
   class="kw">private class="kw">static class="kw">final Message MESSAGE_COMMANDS_NPC_BENCHMARK_START_FAILED = Message.translation("server.commands.npc.benchmark.startFailed");
   @Nonnull
   class="kw">private class="kw">static class="kw">final Message MESSAGE_COMMANDS_NPC_BENCHMARK_DONE = Message.translation("server.commands.npc.benchmark.done");
   @Nonnull
   class="kw">private class="kw">final FlagArg roleArg = this.withFlagArg("roles", "server.commands.npc.benchmark.role.desc");
   @Nonnull
   class="kw">private class="kw">final FlagArg sensorSupportArg = this.withFlagArg("sensorsupport", "server.commands.npc.benchmark.sensor.desc");
   @Nonnull
   class="kw">private class="kw">final OptionalArg<Double> secondsArg = this.withOptionalArg("seconds", "server.commands.npc.benchmark.role.seconds", ArgTypes.DOUBLE)
      .addValidator(Validators.greaterThan(0.0));

   class="kw">public NPCBenchmarkCommand() {
      super("benchmark", "server.commands.npc.benchmark.desc");
   }

   @Override
   class="kw">protected void executeSync(@Nonnull CommandContext var1) {
      double var2 = this.secondsArg.provided(var1) ? this.secondsArg.get(var1) : 30.0;
      boolean var4;
      if (this.roleArg.get(var1)) {
         var4 = NPCPlugin.get()
            .startRoleBenchmark(
               var2,
               var3 -> {
                  StringBuilder var4 = new StringBuilder().append("Role benchmark seconds=").append(var2).append('\n');
                  Formatter var5 = new Formatter(var4);
                  if (!var3.isEmpty()) {
                     TimeDistributionRecorder var6 = (TimeDistributionRecorder)var3.get(-1);
                     var6.formatHeader(var5);
                     var4.append('\n');
                     IntArrayList var7 = new IntArrayList(var3.keySet());
                     var7.rem(-1);
                     var7.sort(
                        (var1x, var2x) -> Double.compare(
                           ((TimeDistributionRecorder)var3.get(var1x)).getAverage(), ((TimeDistributionRecorder)var3.get(var2x)).getAverage()
                        )
                     );

                     for (int var8 = 0; var8 < var7.size(); var8++) {
                        int var9 = var7.getInt(var8);
                        logRoleDistribution((TimeDistributionRecorder)var3.get(var9), var4, var5, NPCPlugin.get().getName(var9));
                     }

                     logRoleDistribution((TimeDistributionRecorder)var3.get(-1), var4, var5, "ALL");
                  }

                  var1.sendMessage(MESSAGE_COMMANDS_NPC_BENCHMARK_DONE);
                  NPCPlugin.get().getLogger().at(Level.INFO).log("%s", var4.toString());
               }
            );
      } else if (this.sensorSupportArg.get(var1)) {
         var4 = NPCPlugin.get().startSensorSupportBenchmark(var2, var3 -> {
            StringBuilder var4 = new StringBuilder().append("PositionCache benchmark seconds=").append(var2).append('\n');
            Formatter var5 = new Formatter(var4);
            if (!var3.isEmpty()) {
               IntArrayList var6 = new IntArrayList(var3.keySet());
               var6.rem(-1);
               var6.sort((var0x, var1x) -> NPCPlugin.get().getName(var0x).compareToIgnoreCase(NPCPlugin.get().getName(var1x)));
               SensorSupportBenchmark var7 = (SensorSupportBenchmark)var3.get(-1);
               var4.append("PositionCache Update Times\n");
               var7.formatHeaderUpdateTimes(var5);
               var4.append('\n');

               for (int var8 = 0; var8 < var6.size(); var8++) {
                  int var9 = var6.getInt(var8);
                  SensorSupportBenchmark var10 = (SensorSupportBenchmark)var3.get(var9);
                  if (var10.haveUpdateTimes()) {
                     logSensorSupportUpdateTime(var10, var4, var5, NPCPlugin.get().getName(var9));
                  }
               }

               logSensorSupportUpdateTime((SensorSupportBenchmark)var3.get(-1), var4, var5, "ALL");
               var4.append("PositionCache Line of sight\n");
               var7.formatHeaderLoS(var5);
               var4.append('\n');

               for (int var11 = 0; var11 < var6.size(); var11++) {
                  int var12 = var6.getInt(var11);
                  logSensorSupportLoS((SensorSupportBenchmark)var3.get(var12), var4, var5, NPCPlugin.get().getName(var12));
               }

               logSensorSupportLoS((SensorSupportBenchmark)var3.get(-1), var4, var5, "ALL");
            }

            var1.sendMessage(MESSAGE_COMMANDS_NPC_BENCHMARK_DONE);
            NPCPlugin.get().getLogger().at(Level.INFO).log("%s", var4.toString());
         });
      } else {
         var4 = false;
      }

      if (var4) {
         var1.sendMessage(Message.translation("server.commands.npc.benchmark.startedFor").param("seconds", var2));
      } else {
         var1.sendMessage(MESSAGE_COMMANDS_NPC_BENCHMARK_START_FAILED);
      }
   }

   class="kw">private class="kw">static void logRoleDistribution(@Nonnull TimeDistributionRecorder var0, @Nonnull StringBuilder var1, @Nonnull Formatter var2, @Nonnull String var3) {
      var0.formatValues(var2, 10000L);
      var1.append("|").append(var3).append('\n');
   }

   class="kw">private class="kw">static void logSensorSupportUpdateTime(
      @Nonnull SensorSupportBenchmark var0, @Nonnull StringBuilder var1, @Nonnull Formatter var2, @Nonnull String var3
   ) {
      var0.formatValuesUpdateTimePlayer(var2);
      var1.append('|').append(var3).append('\n');
      var0.formatValuesUpdateTimeEntity(var2);
      var1.append('|').append(var3).append('\n');
   }

   class="kw">private class="kw">static void logSensorSupportLoS(@Nonnull SensorSupportBenchmark var0, @Nonnull StringBuilder var1, @Nonnull Formatter var2, @Nonnull String var3) {
      if (var0.formatValuesLoS(var2)) {
         var1.append('|').append(var3).append('\n');
      }
   }
}