ktongue/docker_container / SGAE /vendor /phpunit /php-timer /src /ResourceUsageFormatter.php
download
raw
2.12 kB
<?php declare(strict_types=1);
/*
* This file is part of phpunit/php-timer.
*
* (c) Sebastian Bergmann <sebastian@phpunit.de>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace SebastianBergmann\Timer;
use function is_float;
use function memory_get_peak_usage;
use function microtime;
use function sprintf;
final class ResourceUsageFormatter
{
/**
* @psalm-var array<string,int>
*/
private const SIZES = [
'GB' => 1073741824,
'MB' => 1048576,
'KB' => 1024,
];
public function resourceUsage(Duration $duration): string
{
return sprintf(
'Time: %s, Memory: %s',
$duration->asString(),
$this->bytesToString(memory_get_peak_usage(true))
);
}
/**
* @throws TimeSinceStartOfRequestNotAvailableException
*/
public function resourceUsageSinceStartOfRequest(): string
{
if (!isset($_SERVER['REQUEST_TIME_FLOAT'])) {
throw new TimeSinceStartOfRequestNotAvailableException(
'Cannot determine time at which the request started because $_SERVER[\'REQUEST_TIME_FLOAT\'] is not available'
);
}
if (!is_float($_SERVER['REQUEST_TIME_FLOAT'])) {
throw new TimeSinceStartOfRequestNotAvailableException(
'Cannot determine time at which the request started because $_SERVER[\'REQUEST_TIME_FLOAT\'] is not of type float'
);
}
return $this->resourceUsage(
Duration::fromMicroseconds(
(1000000 * (microtime(true) - $_SERVER['REQUEST_TIME_FLOAT']))
)
);
}
private function bytesToString(int $bytes): string
{
foreach (self::SIZES as $unit => $value) {
if ($bytes >= $value) {
return sprintf('%.2f %s', $bytes / $value, $unit);
}
}
// @codeCoverageIgnoreStart
return $bytes . ' byte' . ($bytes !== 1 ? 's' : '');
// @codeCoverageIgnoreEnd
}
}

Xet Storage Details

Size:
2.12 kB
·
Xet hash:
810289cb2831b5fec6aa29e61c88a5a8150d1e2957cd3c71da0e6fab8ecc92e9

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.