Buckets:
| 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.