Merge branch 'minor-next' into compressor-threads

This commit is contained in:
Dylan K. Taylor 2023-11-13 11:40:31 +00:00
commit 671c65d787
No known key found for this signature in database
GPG Key ID: 8927471A91CAFD3D

View File

@ -24,7 +24,9 @@ declare(strict_types=1);
namespace pocketmine; namespace pocketmine;
use pocketmine\snooze\SleeperHandler; use pocketmine\snooze\SleeperHandler;
use pocketmine\snooze\SleeperHandlerEntry;
use pocketmine\timings\TimingsHandler; use pocketmine\timings\TimingsHandler;
use pocketmine\utils\Utils;
use function hrtime; use function hrtime;
/** /**
@ -35,12 +37,29 @@ final class TimeTrackingSleeperHandler extends SleeperHandler{
private int $notificationProcessingTimeNs = 0; private int $notificationProcessingTimeNs = 0;
/**
* @var TimingsHandler[]
* @phpstan-var array<string, TimingsHandler>
*/
private static array $handlerTimings = [];
public function __construct( public function __construct(
private TimingsHandler $timings private TimingsHandler $timings
){ ){
parent::__construct(); parent::__construct();
} }
public function addNotifier(\Closure $handler) : SleeperHandlerEntry{
$name = Utils::getNiceClosureName($handler);
$timings = self::$handlerTimings[$name] ??= new TimingsHandler("Snooze Handler: " . $name, $this->timings);
return parent::addNotifier(function() use ($timings, $handler) : void{
$timings->startTiming();
$handler();
$timings->stopTiming();
});
}
/** /**
* Returns the time in nanoseconds spent processing notifications since the last reset. * Returns the time in nanoseconds spent processing notifications since the last reset.
*/ */