mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-04-22 16:51:42 +00:00
Timings: Clean up some terrible code, move namespaces
This commit is contained in:
parent
209e28dfe5
commit
73e09392b6
@ -24,9 +24,9 @@ declare(strict_types=1);
|
||||
namespace pocketmine;
|
||||
|
||||
use pocketmine\event\server\LowMemoryEvent;
|
||||
use pocketmine\event\Timings;
|
||||
use pocketmine\scheduler\DumpWorkerMemoryTask;
|
||||
use pocketmine\scheduler\GarbageCollectionTask;
|
||||
use pocketmine\timings\Timings;
|
||||
use pocketmine\utils\MainLogger;
|
||||
use pocketmine\utils\Utils;
|
||||
|
||||
|
@ -68,7 +68,6 @@ use pocketmine\event\player\PlayerToggleSneakEvent;
|
||||
use pocketmine\event\player\PlayerToggleSprintEvent;
|
||||
use pocketmine\event\player\PlayerTransferEvent;
|
||||
use pocketmine\event\server\DataPacketSendEvent;
|
||||
use pocketmine\event\Timings;
|
||||
use pocketmine\inventory\BigCraftingGrid;
|
||||
use pocketmine\inventory\CraftingGrid;
|
||||
use pocketmine\inventory\Inventory;
|
||||
@ -153,6 +152,7 @@ use pocketmine\resourcepacks\ResourcePack;
|
||||
use pocketmine\tile\ItemFrame;
|
||||
use pocketmine\tile\Spawnable;
|
||||
use pocketmine\tile\Tile;
|
||||
use pocketmine\timings\Timings;
|
||||
use pocketmine\utils\TextFormat;
|
||||
use pocketmine\utils\UUID;
|
||||
|
||||
|
@ -41,8 +41,6 @@ use pocketmine\event\level\LevelLoadEvent;
|
||||
use pocketmine\event\player\PlayerDataSaveEvent;
|
||||
use pocketmine\event\server\QueryRegenerateEvent;
|
||||
use pocketmine\event\server\ServerCommandEvent;
|
||||
use pocketmine\event\Timings;
|
||||
use pocketmine\event\TimingsHandler;
|
||||
use pocketmine\inventory\CraftingManager;
|
||||
use pocketmine\item\enchantment\Enchantment;
|
||||
use pocketmine\item\Item;
|
||||
@ -93,6 +91,8 @@ use pocketmine\scheduler\FileWriteTask;
|
||||
use pocketmine\scheduler\SendUsageTask;
|
||||
use pocketmine\scheduler\ServerScheduler;
|
||||
use pocketmine\tile\Tile;
|
||||
use pocketmine\timings\Timings;
|
||||
use pocketmine\timings\TimingsHandler;
|
||||
use pocketmine\updater\AutoUpdater;
|
||||
use pocketmine\utils\Binary;
|
||||
use pocketmine\utils\Config;
|
||||
@ -1593,6 +1593,7 @@ class Server{
|
||||
|
||||
|
||||
Timings::init();
|
||||
TimingsHandler::setEnabled((bool) $this->getProperty("settings.enable-profiling", false));
|
||||
|
||||
$this->consoleSender = new ConsoleCommandSender();
|
||||
$this->commandMap = new SimpleCommandMap($this);
|
||||
@ -1611,7 +1612,6 @@ class Server{
|
||||
|
||||
$this->pluginManager = new PluginManager($this, $this->commandMap);
|
||||
$this->pluginManager->subscribeToPermission(Server::BROADCAST_CHANNEL_ADMINISTRATIVE, $this->consoleSender);
|
||||
$this->pluginManager->setUseTimings($this->getProperty("settings.enable-profiling", false));
|
||||
$this->profilingTickRate = (float) $this->getProperty("settings.profile-report-trigger", 20);
|
||||
$this->pluginManager->registerInterface(PharPluginLoader::class);
|
||||
$this->pluginManager->registerInterface(ScriptPluginLoader::class);
|
||||
|
@ -26,10 +26,10 @@ declare(strict_types=1);
|
||||
*/
|
||||
namespace pocketmine\command;
|
||||
|
||||
use pocketmine\event\TimingsHandler;
|
||||
use pocketmine\lang\TextContainer;
|
||||
use pocketmine\lang\TranslationContainer;
|
||||
use pocketmine\Server;
|
||||
use pocketmine\timings\TimingsHandler;
|
||||
use pocketmine\utils\TextFormat;
|
||||
|
||||
abstract class Command{
|
||||
|
@ -25,16 +25,14 @@ namespace pocketmine\command\defaults;
|
||||
|
||||
use pocketmine\command\CommandSender;
|
||||
use pocketmine\command\utils\InvalidCommandSyntaxException;
|
||||
use pocketmine\event\TimingsHandler;
|
||||
use pocketmine\lang\TranslationContainer;
|
||||
use pocketmine\Player;
|
||||
use pocketmine\scheduler\BulkCurlTask;
|
||||
use pocketmine\Server;
|
||||
use pocketmine\timings\TimingsHandler;
|
||||
|
||||
class TimingsCommand extends VanillaCommand{
|
||||
|
||||
public static $timingStart = 0;
|
||||
|
||||
public function __construct(string $name){
|
||||
parent::__construct(
|
||||
$name,
|
||||
@ -56,18 +54,17 @@ class TimingsCommand extends VanillaCommand{
|
||||
$mode = strtolower($args[0]);
|
||||
|
||||
if($mode === "on"){
|
||||
$sender->getServer()->getPluginManager()->setUseTimings(true);
|
||||
TimingsHandler::reload();
|
||||
TimingsHandler::setEnabled();
|
||||
$sender->sendMessage(new TranslationContainer("pocketmine.command.timings.enable"));
|
||||
|
||||
return true;
|
||||
}elseif($mode === "off"){
|
||||
$sender->getServer()->getPluginManager()->setUseTimings(false);
|
||||
TimingsHandler::setEnabled(false);
|
||||
$sender->sendMessage(new TranslationContainer("pocketmine.command.timings.disable"));
|
||||
return true;
|
||||
}
|
||||
|
||||
if(!$sender->getServer()->getPluginManager()->useTimings()){
|
||||
if(!TimingsHandler::isEnabled()){
|
||||
$sender->sendMessage(new TranslationContainer("pocketmine.command.timings.timingsDisabled"));
|
||||
|
||||
return true;
|
||||
@ -79,25 +76,25 @@ class TimingsCommand extends VanillaCommand{
|
||||
TimingsHandler::reload();
|
||||
$sender->sendMessage(new TranslationContainer("pocketmine.command.timings.reset"));
|
||||
}elseif($mode === "merged" or $mode === "report" or $paste){
|
||||
$timings = "";
|
||||
if($paste){
|
||||
$fileTimings = fopen("php://temp", "r+b");
|
||||
}else{
|
||||
$index = 0;
|
||||
$timingFolder = $sender->getServer()->getDataPath() . "timings/";
|
||||
|
||||
$sampleTime = microtime(true) - self::$timingStart;
|
||||
$index = 0;
|
||||
$timingFolder = $sender->getServer()->getDataPath() . "timings/";
|
||||
if(!file_exists($timingFolder)){
|
||||
mkdir($timingFolder, 0777);
|
||||
}
|
||||
$timings = $timingFolder . "timings.txt";
|
||||
while(file_exists($timings)){
|
||||
$timings = $timingFolder . "timings" . (++$index) . ".txt";
|
||||
}
|
||||
|
||||
if(!file_exists($timingFolder)){
|
||||
mkdir($timingFolder, 0777);
|
||||
$fileTimings = fopen($timings, "a+b");
|
||||
}
|
||||
$timings = $timingFolder . "timings.txt";
|
||||
while(file_exists($timings)){
|
||||
$timings = $timingFolder . "timings" . (++$index) . ".txt";
|
||||
}
|
||||
|
||||
$fileTimings = $paste ? fopen("php://temp", "r+b") : fopen($timings, "a+b");
|
||||
|
||||
TimingsHandler::printTimings($fileTimings);
|
||||
|
||||
fwrite($fileTimings, "Sample time " . round($sampleTime * 1000000000) . " (" . $sampleTime . "s)" . PHP_EOL);
|
||||
|
||||
if($paste){
|
||||
fseek($fileTimings, 0);
|
||||
$data = [
|
||||
|
@ -48,8 +48,6 @@ use pocketmine\event\entity\EntityMotionEvent;
|
||||
use pocketmine\event\entity\EntityRegainHealthEvent;
|
||||
use pocketmine\event\entity\EntitySpawnEvent;
|
||||
use pocketmine\event\entity\EntityTeleportEvent;
|
||||
use pocketmine\event\Timings;
|
||||
use pocketmine\event\TimingsHandler;
|
||||
use pocketmine\level\format\Chunk;
|
||||
use pocketmine\level\Level;
|
||||
use pocketmine\level\Location;
|
||||
@ -74,6 +72,8 @@ use pocketmine\network\mcpe\protocol\SetEntityMotionPacket;
|
||||
use pocketmine\Player;
|
||||
use pocketmine\plugin\Plugin;
|
||||
use pocketmine\Server;
|
||||
use pocketmine\timings\Timings;
|
||||
use pocketmine\timings\TimingsHandler;
|
||||
|
||||
abstract class Entity extends Location implements Metadatable, EntityIds{
|
||||
|
||||
|
@ -30,7 +30,6 @@ use pocketmine\event\entity\EntityDamageEvent;
|
||||
use pocketmine\event\entity\EntityDeathEvent;
|
||||
use pocketmine\event\entity\EntityEffectAddEvent;
|
||||
use pocketmine\event\entity\EntityEffectRemoveEvent;
|
||||
use pocketmine\event\Timings;
|
||||
use pocketmine\inventory\ArmorInventory;
|
||||
use pocketmine\item\Armor;
|
||||
use pocketmine\item\Consumable;
|
||||
@ -47,6 +46,7 @@ use pocketmine\network\mcpe\protocol\EntityEventPacket;
|
||||
use pocketmine\network\mcpe\protocol\LevelSoundEventPacket;
|
||||
use pocketmine\network\mcpe\protocol\MobEffectPacket;
|
||||
use pocketmine\Player;
|
||||
use pocketmine\timings\Timings;
|
||||
use pocketmine\utils\Binary;
|
||||
use pocketmine\utils\Color;
|
||||
|
||||
|
@ -33,7 +33,6 @@ use pocketmine\event\entity\EntityDamageEvent;
|
||||
use pocketmine\event\entity\ProjectileHitBlockEvent;
|
||||
use pocketmine\event\entity\ProjectileHitEntityEvent;
|
||||
use pocketmine\event\entity\ProjectileHitEvent;
|
||||
use pocketmine\event\Timings;
|
||||
use pocketmine\level\Level;
|
||||
use pocketmine\math\RayTraceResult;
|
||||
use pocketmine\math\Vector3;
|
||||
@ -41,6 +40,7 @@ use pocketmine\math\VoxelRayTrace;
|
||||
use pocketmine\nbt\tag\ByteTag;
|
||||
use pocketmine\nbt\tag\CompoundTag;
|
||||
use pocketmine\nbt\tag\IntTag;
|
||||
use pocketmine\timings\Timings;
|
||||
|
||||
abstract class Projectile extends Entity{
|
||||
|
||||
|
@ -23,12 +23,12 @@ declare(strict_types=1);
|
||||
|
||||
namespace pocketmine\inventory;
|
||||
|
||||
use pocketmine\event\Timings;
|
||||
use pocketmine\item\Item;
|
||||
use pocketmine\item\ItemFactory;
|
||||
use pocketmine\network\mcpe\protocol\BatchPacket;
|
||||
use pocketmine\network\mcpe\protocol\CraftingDataPacket;
|
||||
use pocketmine\Server;
|
||||
use pocketmine\timings\Timings;
|
||||
use pocketmine\utils\Config;
|
||||
use pocketmine\utils\MainLogger;
|
||||
use pocketmine\utils\UUID;
|
||||
|
@ -40,9 +40,7 @@ use pocketmine\event\level\ChunkUnloadEvent;
|
||||
use pocketmine\event\level\LevelSaveEvent;
|
||||
use pocketmine\event\level\LevelUnloadEvent;
|
||||
use pocketmine\event\level\SpawnChangeEvent;
|
||||
use pocketmine\event\LevelTimings;
|
||||
use pocketmine\event\player\PlayerInteractEvent;
|
||||
use pocketmine\event\Timings;
|
||||
use pocketmine\item\Item;
|
||||
use pocketmine\item\ItemFactory;
|
||||
use pocketmine\level\format\Chunk;
|
||||
@ -83,6 +81,7 @@ use pocketmine\Server;
|
||||
use pocketmine\tile\Chest;
|
||||
use pocketmine\tile\Container;
|
||||
use pocketmine\tile\Tile;
|
||||
use pocketmine\timings\Timings;
|
||||
use pocketmine\utils\Random;
|
||||
use pocketmine\utils\ReversePriorityQueue;
|
||||
|
||||
|
@ -21,9 +21,9 @@
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace pocketmine\event;
|
||||
namespace pocketmine\level;
|
||||
|
||||
use pocketmine\level\Level;
|
||||
use pocketmine\timings\TimingsHandler;
|
||||
|
||||
class LevelTimings{
|
||||
|
||||
@ -34,36 +34,20 @@ class LevelTimings{
|
||||
/** @var TimingsHandler */
|
||||
public $doBlockSkyLightUpdates;
|
||||
|
||||
/** @var TimingsHandler */
|
||||
public $mobSpawn;
|
||||
/** @var TimingsHandler */
|
||||
public $doChunkUnload;
|
||||
/** @var TimingsHandler */
|
||||
public $doPortalForcer;
|
||||
/** @var TimingsHandler */
|
||||
public $doTickPending;
|
||||
/** @var TimingsHandler */
|
||||
public $doTickTiles;
|
||||
/** @var TimingsHandler */
|
||||
public $doVillages;
|
||||
/** @var TimingsHandler */
|
||||
public $doChunkMap;
|
||||
/** @var TimingsHandler */
|
||||
public $doChunkGC;
|
||||
/** @var TimingsHandler */
|
||||
public $doSounds;
|
||||
/** @var TimingsHandler */
|
||||
public $entityTick;
|
||||
/** @var TimingsHandler */
|
||||
public $tileEntityTick;
|
||||
/** @var TimingsHandler */
|
||||
public $tileEntityPending;
|
||||
/** @var TimingsHandler */
|
||||
public $tracker;
|
||||
/** @var TimingsHandler */
|
||||
public $doTick;
|
||||
/** @var TimingsHandler */
|
||||
public $tickEntities;
|
||||
|
||||
/** @var TimingsHandler */
|
||||
public $syncChunkSendTimer;
|
||||
@ -75,15 +59,9 @@ class LevelTimings{
|
||||
/** @var TimingsHandler */
|
||||
public $syncChunkLoadDataTimer;
|
||||
/** @var TimingsHandler */
|
||||
public $syncChunkLoadStructuresTimer;
|
||||
/** @var TimingsHandler */
|
||||
public $syncChunkLoadEntitiesTimer;
|
||||
/** @var TimingsHandler */
|
||||
public $syncChunkLoadTileEntitiesTimer;
|
||||
/** @var TimingsHandler */
|
||||
public $syncChunkLoadTileTicksTimer;
|
||||
/** @var TimingsHandler */
|
||||
public $syncChunkLoadPostTimer;
|
||||
|
||||
public function __construct(Level $level){
|
||||
$name = $level->getFolderName() . " - ";
|
||||
@ -92,33 +70,22 @@ class LevelTimings{
|
||||
$this->doBlockLightUpdates = new TimingsHandler("** " . $name . "doBlockLightUpdates");
|
||||
$this->doBlockSkyLightUpdates = new TimingsHandler("** " . $name . "doBlockSkyLightUpdates");
|
||||
|
||||
$this->mobSpawn = new TimingsHandler("** " . $name . "mobSpawn");
|
||||
$this->doChunkUnload = new TimingsHandler("** " . $name . "doChunkUnload");
|
||||
$this->doTickPending = new TimingsHandler("** " . $name . "doTickPending");
|
||||
$this->doTickTiles = new TimingsHandler("** " . $name . "doTickTiles");
|
||||
$this->doVillages = new TimingsHandler("** " . $name . "doVillages");
|
||||
$this->doChunkMap = new TimingsHandler("** " . $name . "doChunkMap");
|
||||
$this->doSounds = new TimingsHandler("** " . $name . "doSounds");
|
||||
$this->doChunkGC = new TimingsHandler("** " . $name . "doChunkGC");
|
||||
$this->doPortalForcer = new TimingsHandler("** " . $name . "doPortalForcer");
|
||||
$this->entityTick = new TimingsHandler("** " . $name . "entityTick");
|
||||
$this->tileEntityTick = new TimingsHandler("** " . $name . "tileEntityTick");
|
||||
$this->tileEntityPending = new TimingsHandler("** " . $name . "tileEntityPending");
|
||||
|
||||
$this->syncChunkSendTimer = new TimingsHandler("** " . $name . "syncChunkSend");
|
||||
$this->syncChunkSendPrepareTimer = new TimingsHandler("** " . $name . "syncChunkSendPrepare");
|
||||
|
||||
$this->syncChunkLoadTimer = new TimingsHandler("** " . $name . "syncChunkLoad");
|
||||
$this->syncChunkLoadDataTimer = new TimingsHandler("** " . $name . "syncChunkLoad - Data");
|
||||
$this->syncChunkLoadStructuresTimer = new TimingsHandler("** " . $name . "syncChunkLoad - Structures");
|
||||
$this->syncChunkLoadEntitiesTimer = new TimingsHandler("** " . $name . "syncChunkLoad - Entities");
|
||||
$this->syncChunkLoadTileEntitiesTimer = new TimingsHandler("** " . $name . "syncChunkLoad - TileEntities");
|
||||
$this->syncChunkLoadTileTicksTimer = new TimingsHandler("** " . $name . "syncChunkLoad - TileTicks");
|
||||
$this->syncChunkLoadPostTimer = new TimingsHandler("** " . $name . "syncChunkLoad - Post");
|
||||
|
||||
$this->tracker = new TimingsHandler($name . "tracker");
|
||||
$this->doTick = new TimingsHandler($name . "doTick");
|
||||
$this->tickEntities = new TimingsHandler($name . "tickEntities");
|
||||
}
|
||||
|
||||
}
|
@ -25,7 +25,6 @@ namespace pocketmine\network\mcpe;
|
||||
|
||||
|
||||
use pocketmine\event\server\DataPacketReceiveEvent;
|
||||
use pocketmine\event\Timings;
|
||||
use pocketmine\network\mcpe\protocol\AdventureSettingsPacket;
|
||||
use pocketmine\network\mcpe\protocol\AnimatePacket;
|
||||
use pocketmine\network\mcpe\protocol\BlockEntityDataPacket;
|
||||
@ -65,6 +64,7 @@ use pocketmine\network\mcpe\protocol\SpawnExperienceOrbPacket;
|
||||
use pocketmine\network\mcpe\protocol\TextPacket;
|
||||
use pocketmine\Player;
|
||||
use pocketmine\Server;
|
||||
use pocketmine\timings\Timings;
|
||||
|
||||
class PlayerNetworkSessionAdapter extends NetworkSession{
|
||||
|
||||
|
@ -23,10 +23,10 @@ declare(strict_types=1);
|
||||
|
||||
namespace pocketmine\permission;
|
||||
|
||||
use pocketmine\event\Timings;
|
||||
use pocketmine\plugin\Plugin;
|
||||
use pocketmine\plugin\PluginException;
|
||||
use pocketmine\Server;
|
||||
use pocketmine\timings\Timings;
|
||||
|
||||
class PermissibleBase implements Permissible{
|
||||
/** @var ServerOperator */
|
||||
|
@ -23,19 +23,18 @@ declare(strict_types=1);
|
||||
|
||||
namespace pocketmine\plugin;
|
||||
|
||||
use pocketmine\command\defaults\TimingsCommand;
|
||||
use pocketmine\command\PluginCommand;
|
||||
use pocketmine\command\SimpleCommandMap;
|
||||
use pocketmine\event\Event;
|
||||
use pocketmine\event\EventPriority;
|
||||
use pocketmine\event\HandlerList;
|
||||
use pocketmine\event\Listener;
|
||||
use pocketmine\event\Timings;
|
||||
use pocketmine\event\TimingsHandler;
|
||||
use pocketmine\network\mcpe\protocol\ProtocolInfo;
|
||||
use pocketmine\permission\Permissible;
|
||||
use pocketmine\permission\Permission;
|
||||
use pocketmine\Server;
|
||||
use pocketmine\timings\Timings;
|
||||
use pocketmine\timings\TimingsHandler;
|
||||
|
||||
/**
|
||||
* Manages all the plugins, Permissions and Permissibles
|
||||
@ -91,8 +90,6 @@ class PluginManager{
|
||||
/** @var TimingsHandler */
|
||||
public static $pluginParentTimer;
|
||||
|
||||
public static $useTimings = false;
|
||||
|
||||
/**
|
||||
* @param Server $server
|
||||
* @param SimpleCommandMap $commandMap
|
||||
@ -334,12 +331,8 @@ class PluginManager{
|
||||
}
|
||||
}
|
||||
|
||||
TimingsCommand::$timingStart = microtime(true);
|
||||
|
||||
return $loadedPlugins;
|
||||
}else{
|
||||
TimingsCommand::$timingStart = microtime(true);
|
||||
|
||||
return [];
|
||||
}
|
||||
}
|
||||
@ -798,19 +791,4 @@ class PluginManager{
|
||||
|
||||
return $event::$handlerList;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return bool
|
||||
*/
|
||||
public function useTimings() : bool{
|
||||
return self::$useTimings;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param bool $use
|
||||
*/
|
||||
public function setUseTimings(bool $use){
|
||||
self::$useTimings = $use;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -26,7 +26,7 @@ namespace pocketmine\plugin;
|
||||
use pocketmine\event\Cancellable;
|
||||
use pocketmine\event\Event;
|
||||
use pocketmine\event\Listener;
|
||||
use pocketmine\event\TimingsHandler;
|
||||
use pocketmine\timings\TimingsHandler;
|
||||
|
||||
class RegisteredListener{
|
||||
|
||||
|
@ -23,8 +23,8 @@ declare(strict_types=1);
|
||||
|
||||
namespace pocketmine\scheduler;
|
||||
|
||||
use pocketmine\event\Timings;
|
||||
use pocketmine\Server;
|
||||
use pocketmine\timings\Timings;
|
||||
|
||||
class AsyncPool{
|
||||
|
||||
|
@ -23,8 +23,8 @@ declare(strict_types=1);
|
||||
|
||||
namespace pocketmine\scheduler;
|
||||
|
||||
use pocketmine\event\Timings;
|
||||
use pocketmine\event\TimingsHandler;
|
||||
use pocketmine\timings\Timings;
|
||||
use pocketmine\timings\TimingsHandler;
|
||||
use pocketmine\utils\MainLogger;
|
||||
|
||||
class TaskHandler{
|
||||
|
@ -28,8 +28,6 @@ declare(strict_types=1);
|
||||
namespace pocketmine\tile;
|
||||
|
||||
use pocketmine\block\Block;
|
||||
use pocketmine\event\Timings;
|
||||
use pocketmine\event\TimingsHandler;
|
||||
use pocketmine\item\Item;
|
||||
use pocketmine\level\Level;
|
||||
use pocketmine\level\Position;
|
||||
@ -39,6 +37,8 @@ use pocketmine\nbt\tag\IntTag;
|
||||
use pocketmine\nbt\tag\StringTag;
|
||||
use pocketmine\Player;
|
||||
use pocketmine\Server;
|
||||
use pocketmine\timings\Timings;
|
||||
use pocketmine\timings\TimingsHandler;
|
||||
|
||||
abstract class Tile extends Position{
|
||||
|
||||
|
@ -21,7 +21,7 @@
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace pocketmine\event;
|
||||
namespace pocketmine\timings;
|
||||
|
||||
use pocketmine\entity\Entity;
|
||||
use pocketmine\network\mcpe\protocol\DataPacket;
|
||||
@ -44,8 +44,6 @@ abstract class Timings{
|
||||
/** @var TimingsHandler */
|
||||
public static $titleTickTimer;
|
||||
/** @var TimingsHandler */
|
||||
public static $playerListTimer;
|
||||
/** @var TimingsHandler */
|
||||
public static $playerNetworkTimer;
|
||||
/** @var TimingsHandler */
|
||||
public static $playerNetworkReceiveTimer;
|
||||
@ -56,20 +54,12 @@ abstract class Timings{
|
||||
/** @var TimingsHandler */
|
||||
public static $connectionTimer;
|
||||
/** @var TimingsHandler */
|
||||
public static $tickablesTimer;
|
||||
/** @var TimingsHandler */
|
||||
public static $schedulerTimer;
|
||||
/** @var TimingsHandler */
|
||||
public static $chunkIOTickTimer;
|
||||
/** @var TimingsHandler */
|
||||
public static $timeUpdateTimer;
|
||||
/** @var TimingsHandler */
|
||||
public static $serverCommandTimer;
|
||||
/** @var TimingsHandler */
|
||||
public static $worldSaveTimer;
|
||||
/** @var TimingsHandler */
|
||||
public static $generationTimer;
|
||||
/** @var TimingsHandler */
|
||||
public static $populationTimer;
|
||||
/** @var TimingsHandler */
|
||||
public static $generationCallbackTimer;
|
||||
@ -83,22 +73,12 @@ abstract class Timings{
|
||||
/** @var TimingsHandler */
|
||||
public static $tickEntityTimer;
|
||||
/** @var TimingsHandler */
|
||||
public static $activatedEntityTimer;
|
||||
/** @var TimingsHandler */
|
||||
public static $tickTileEntityTimer;
|
||||
|
||||
/** @var TimingsHandler */
|
||||
public static $timerEntityBaseTick;
|
||||
/** @var TimingsHandler */
|
||||
public static $timerLivingEntityBaseTick;
|
||||
/** @var TimingsHandler */
|
||||
public static $timerEntityAI;
|
||||
/** @var TimingsHandler */
|
||||
public static $timerEntityAICollision;
|
||||
/** @var TimingsHandler */
|
||||
public static $timerEntityAIMove;
|
||||
/** @var TimingsHandler */
|
||||
public static $timerEntityTickRest;
|
||||
|
||||
/** @var TimingsHandler */
|
||||
public static $schedulerSyncTimer;
|
||||
@ -132,19 +112,14 @@ abstract class Timings{
|
||||
self::$memoryManagerTimer = new TimingsHandler("Memory Manager");
|
||||
self::$garbageCollectorTimer = new TimingsHandler("Garbage Collector", self::$memoryManagerTimer);
|
||||
self::$titleTickTimer = new TimingsHandler("Console Title Tick");
|
||||
self::$playerListTimer = new TimingsHandler("Player List");
|
||||
self::$playerNetworkTimer = new TimingsHandler("Player Network Send");
|
||||
self::$playerNetworkReceiveTimer = new TimingsHandler("Player Network Receive");
|
||||
self::$playerChunkOrderTimer = new TimingsHandler("Player Order Chunks");
|
||||
self::$playerChunkSendTimer = new TimingsHandler("Player Send Chunks");
|
||||
self::$connectionTimer = new TimingsHandler("Connection Handler");
|
||||
self::$tickablesTimer = new TimingsHandler("Tickables");
|
||||
self::$schedulerTimer = new TimingsHandler("Scheduler");
|
||||
self::$chunkIOTickTimer = new TimingsHandler("ChunkIOTick");
|
||||
self::$timeUpdateTimer = new TimingsHandler("Time Update");
|
||||
self::$serverCommandTimer = new TimingsHandler("Server Command");
|
||||
self::$worldSaveTimer = new TimingsHandler("World Save");
|
||||
self::$generationTimer = new TimingsHandler("World Generation");
|
||||
self::$populationTimer = new TimingsHandler("World Population");
|
||||
self::$generationCallbackTimer = new TimingsHandler("World Generation Callback");
|
||||
self::$permissibleCalculationTimer = new TimingsHandler("Permissible Calculation");
|
||||
@ -152,15 +127,10 @@ abstract class Timings{
|
||||
|
||||
self::$entityMoveTimer = new TimingsHandler("** entityMove");
|
||||
self::$tickEntityTimer = new TimingsHandler("** tickEntity");
|
||||
self::$activatedEntityTimer = new TimingsHandler("** activatedTickEntity");
|
||||
self::$tickTileEntityTimer = new TimingsHandler("** tickTileEntity");
|
||||
|
||||
self::$timerEntityBaseTick = new TimingsHandler("** entityBaseTick");
|
||||
self::$timerLivingEntityBaseTick = new TimingsHandler("** livingEntityBaseTick");
|
||||
self::$timerEntityAI = new TimingsHandler("** livingEntityAI");
|
||||
self::$timerEntityAICollision = new TimingsHandler("** livingEntityAICollision");
|
||||
self::$timerEntityAIMove = new TimingsHandler("** livingEntityAIMove");
|
||||
self::$timerEntityTickRest = new TimingsHandler("** livingEntityTickRest");
|
||||
|
||||
self::$schedulerSyncTimer = new TimingsHandler("** Scheduler - Sync Tasks", PluginManager::$pluginParentTimer);
|
||||
self::$schedulerAsyncTimer = new TimingsHandler("** Scheduler - Async Tasks");
|
@ -21,42 +21,19 @@
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace pocketmine\event;
|
||||
namespace pocketmine\timings;
|
||||
|
||||
use pocketmine\command\defaults\TimingsCommand;
|
||||
use pocketmine\entity\Living;
|
||||
use pocketmine\plugin\PluginManager;
|
||||
use pocketmine\Server;
|
||||
|
||||
class TimingsHandler{
|
||||
|
||||
/** @var TimingsHandler[] */
|
||||
private static $HANDLERS = [];
|
||||
|
||||
private $name;
|
||||
/** @var TimingsHandler */
|
||||
private $parent = null;
|
||||
|
||||
private $count = 0;
|
||||
private $curCount = 0;
|
||||
private $start = 0;
|
||||
private $timingDepth = 0;
|
||||
private $totalTime = 0;
|
||||
private $curTickTotal = 0;
|
||||
private $violations = 0;
|
||||
|
||||
/**
|
||||
* @param string $name
|
||||
* @param TimingsHandler $parent
|
||||
*/
|
||||
public function __construct(string $name, TimingsHandler $parent = null){
|
||||
$this->name = $name;
|
||||
if($parent !== null){
|
||||
$this->parent = $parent;
|
||||
}
|
||||
|
||||
self::$HANDLERS[spl_object_hash($this)] = $this;
|
||||
}
|
||||
/** @var bool */
|
||||
private static $enabled = false;
|
||||
/** @var float */
|
||||
private static $timingStart = 0;
|
||||
|
||||
/**
|
||||
* @param resource $fp
|
||||
@ -92,23 +69,39 @@ class TimingsHandler{
|
||||
|
||||
fwrite($fp, "# Entities " . $entities . PHP_EOL);
|
||||
fwrite($fp, "# LivingEntities " . $livingEntities . PHP_EOL);
|
||||
|
||||
$sampleTime = microtime(true) - self::$timingStart;
|
||||
fwrite($fp, "Sample time " . round($sampleTime * 1000000000) . " (" . $sampleTime . "s)" . PHP_EOL);
|
||||
}
|
||||
|
||||
public static function isEnabled() : bool{
|
||||
return self::$enabled;
|
||||
}
|
||||
|
||||
public static function setEnabled(bool $enable = true) : void{
|
||||
self::$enabled = $enable;
|
||||
self::reload();
|
||||
}
|
||||
|
||||
public static function getStartTime() : float{
|
||||
return self::$timingStart;
|
||||
}
|
||||
|
||||
public static function reload(){
|
||||
if(Server::getInstance()->getPluginManager()->useTimings()){
|
||||
if(self::$enabled){
|
||||
foreach(self::$HANDLERS as $timings){
|
||||
$timings->reset();
|
||||
}
|
||||
TimingsCommand::$timingStart = microtime(true);
|
||||
self::$timingStart = microtime(true);
|
||||
}
|
||||
}
|
||||
|
||||
public static function tick(bool $measure = true){
|
||||
if(PluginManager::$useTimings){
|
||||
if(self::$enabled){
|
||||
if($measure){
|
||||
foreach(self::$HANDLERS as $timings){
|
||||
if($timings->curTickTotal > 0.05){
|
||||
$timings->violations += round($timings->curTickTotal / 0.05);
|
||||
$timings->violations += (int) round($timings->curTickTotal / 0.05);
|
||||
}
|
||||
$timings->curTickTotal = 0;
|
||||
$timings->curCount = 0;
|
||||
@ -127,8 +120,39 @@ class TimingsHandler{
|
||||
}
|
||||
}
|
||||
|
||||
/** @var string */
|
||||
private $name;
|
||||
/** @var TimingsHandler */
|
||||
private $parent = null;
|
||||
|
||||
/** @var int */
|
||||
private $count = 0;
|
||||
/** @var int */
|
||||
private $curCount = 0;
|
||||
/** @var float */
|
||||
private $start = 0;
|
||||
/** @var int */
|
||||
private $timingDepth = 0;
|
||||
/** @var float */
|
||||
private $totalTime = 0;
|
||||
/** @var float */
|
||||
private $curTickTotal = 0;
|
||||
/** @var int */
|
||||
private $violations = 0;
|
||||
|
||||
/**
|
||||
* @param string $name
|
||||
* @param TimingsHandler $parent
|
||||
*/
|
||||
public function __construct(string $name, TimingsHandler $parent = null){
|
||||
$this->name = $name;
|
||||
$this->parent = $parent;
|
||||
|
||||
self::$HANDLERS[spl_object_hash($this)] = $this;
|
||||
}
|
||||
|
||||
public function startTiming(){
|
||||
if(PluginManager::$useTimings and ++$this->timingDepth === 1){
|
||||
if(self::$enabled and ++$this->timingDepth === 1){
|
||||
$this->start = microtime(true);
|
||||
if($this->parent !== null and ++$this->parent->timingDepth === 1){
|
||||
$this->parent->start = $this->start;
|
||||
@ -137,7 +161,7 @@ class TimingsHandler{
|
||||
}
|
||||
|
||||
public function stopTiming(){
|
||||
if(PluginManager::$useTimings){
|
||||
if(self::$enabled){
|
||||
if(--$this->timingDepth !== 0 or $this->start === 0){
|
||||
return;
|
||||
}
|
||||
@ -167,5 +191,4 @@ class TimingsHandler{
|
||||
public function remove(){
|
||||
unset(self::$HANDLERS[spl_object_hash($this)]);
|
||||
}
|
||||
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user