Added timings for calling events

this gives a somewhat better overview of events, particularly if many plugins are subscribed to the same costly event (e.g. PlayerMoveEvent).

In addition, it allows us to see the frequency that events are occurring.
This commit is contained in:
Dylan K. Taylor
2023-03-28 17:25:17 +01:00
parent 4c60e82110
commit b49a9ae81d
2 changed files with 24 additions and 0 deletions

View File

@ -26,6 +26,7 @@ declare(strict_types=1);
*/
namespace pocketmine\event;
use pocketmine\timings\Timings;
use function get_class;
abstract class Event{
@ -51,6 +52,9 @@ abstract class Event{
throw new \RuntimeException("Recursive event call detected (reached max depth of " . self::MAX_EVENT_CALL_DEPTH . " calls)");
}
$timings = Timings::getEventTimings($this);
$timings->startTiming();
$handlerList = HandlerListManager::global()->getListFor(get_class($this));
++self::$eventCallDepth;
@ -67,6 +71,7 @@ abstract class Event{
}
}finally{
--self::$eventCallDepth;
$timings->stopTiming();
}
}
}