From 6c7e16d9d4f33015ae92767a994a351d25317861 Mon Sep 17 00:00:00 2001 From: Shoghi Cervantes Date: Fri, 12 Sep 2014 13:08:59 +0200 Subject: [PATCH] Added Permission/Permissible calculation timings --- src/pocketmine/event/Timings.php | 6 ++++++ src/pocketmine/permission/PermissibleBase.php | 5 +++++ src/pocketmine/plugin/PluginManager.php | 3 +++ 3 files changed, 14 insertions(+) diff --git a/src/pocketmine/event/Timings.php b/src/pocketmine/event/Timings.php index 914744984..38fc43c93 100644 --- a/src/pocketmine/event/Timings.php +++ b/src/pocketmine/event/Timings.php @@ -48,6 +48,10 @@ abstract class Timings{ public static $serverCommandTimer; /** @var TimingsHandler */ public static $worldSaveTimer; + /** @var TimingsHandler */ + public static $permissibleCalculationTimer; + /** @var TimingsHandler */ + public static $permissionDefaultTimer; /** @var TimingsHandler */ public static $entityMoveTimer; @@ -98,6 +102,8 @@ abstract class Timings{ self::$timeUpdateTimer = new TimingsHandler("Time Update"); self::$serverCommandTimer = new TimingsHandler("Server Command"); self::$worldSaveTimer = new TimingsHandler("World Save"); + self::$permissibleCalculationTimer = new TimingsHandler("Permissible Calculation"); + self::$permissionDefaultTimer = new TimingsHandler("Default Permission Calculation"); self::$entityMoveTimer = new TimingsHandler("** entityMove"); self::$tickEntityTimer = new TimingsHandler("** tickEntity"); diff --git a/src/pocketmine/permission/PermissibleBase.php b/src/pocketmine/permission/PermissibleBase.php index ae1218cea..9c7705a76 100644 --- a/src/pocketmine/permission/PermissibleBase.php +++ b/src/pocketmine/permission/PermissibleBase.php @@ -21,6 +21,7 @@ namespace pocketmine\permission; +use pocketmine\event\Timings; use pocketmine\plugin\Plugin; use pocketmine\Server; @@ -162,6 +163,8 @@ class PermissibleBase implements Permissible{ } public function recalculatePermissions(){ + Timings::$permissibleCalculationTimer->startTiming(); + $this->clearPermissions(); $defaults = Server::getInstance()->getPluginManager()->getDefaultPermissions($this->isOp()); Server::getInstance()->getPluginManager()->subscribeToDefaultPerms($this->isOp(), $this->parent); @@ -176,6 +179,8 @@ class PermissibleBase implements Permissible{ foreach($this->attachments as $attachment){ $this->calculateChildPermissions($attachment->getPermissions(), false, $attachment); } + + Timings::$permissibleCalculationTimer->stopTiming(); } public function clearPermissions(){ diff --git a/src/pocketmine/plugin/PluginManager.php b/src/pocketmine/plugin/PluginManager.php index 9abe18a98..a4a045fa4 100644 --- a/src/pocketmine/plugin/PluginManager.php +++ b/src/pocketmine/plugin/PluginManager.php @@ -28,6 +28,7 @@ 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\permission\Permissible; use pocketmine\permission\Permission; @@ -396,6 +397,7 @@ class PluginManager{ * @param Permission $permission */ private function calculatePermissionDefault(Permission $permission){ + Timings::$permissionDefaultTimer->startTiming(); if($permission->getDefault() === Permission::DEFAULT_OP or $permission->getDefault() === Permission::DEFAULT_TRUE){ $this->defaultPermsOp[$permission->getName()] = $permission; $this->dirtyPermissibles(true); @@ -405,6 +407,7 @@ class PluginManager{ $this->defaultPerms[$permission->getName()] = $permission; $this->dirtyPermissibles(false); } + Timings::$permissionDefaultTimer->startTiming(); } /**