2026-02-25 06:59:34 +00:00
# phpunit/php-timer
2026-02-27 00:03:00 +00:00
[](https://packagist.org/packages/phpunit/php-timer)
[](https://github.com/sebastianbergmann/php-timer/actions)
[](https://codecov.io/gh/sebastianbergmann/php-timer)
2026-02-25 06:59:34 +00:00
Utility class for timing things, factored out of PHPUnit into a stand-alone component.
## Installation
You can add this library as a local, per-project dependency to your project using [Composer ](https://getcomposer.org/ ):
2026-02-27 00:03:00 +00:00
```
composer require phpunit/php-timer
```
2026-02-25 06:59:34 +00:00
If you only need this library during development, for instance to run your project's test suite, then you should add it as a development-time dependency:
2026-02-27 00:03:00 +00:00
```
composer require --dev phpunit/php-timer
```
2026-02-25 06:59:34 +00:00
## Usage
### Basic Timing
```php
2026-02-27 00:03:00 +00:00
require __DIR__ . '/vendor/autoload.php';
2026-02-25 06:59:34 +00:00
use SebastianBergmann\Timer\Timer;
2026-02-27 00:03:00 +00:00
$timer = new Timer;
2026-02-25 06:59:34 +00:00
2026-02-27 00:03:00 +00:00
$timer->start();
2026-02-25 06:59:34 +00:00
2026-02-27 00:03:00 +00:00
foreach (\range(0, 100000) as $i) {
// ...
}
2026-02-25 06:59:34 +00:00
2026-02-27 00:03:00 +00:00
$duration = $timer->stop();
var_dump(get_class($duration));
var_dump($duration->asString());
var_dump($duration->asSeconds());
var_dump($duration->asMilliseconds());
var_dump($duration->asMicroseconds());
var_dump($duration->asNanoseconds());
2026-02-25 06:59:34 +00:00
```
The code above yields the output below:
2026-02-27 00:03:00 +00:00
```
string(32) "SebastianBergmann\Timer\Duration"
string(9) "00:00.002"
float(0.002851062)
float(2.851062)
float(2851.062)
int(2851062)
```
### Resource Consumption
2026-02-25 06:59:34 +00:00
2026-02-27 00:03:00 +00:00
#### Explicit duration
2026-02-25 06:59:34 +00:00
```php
2026-02-27 00:03:00 +00:00
require __DIR__ . '/vendor/autoload.php';
use SebastianBergmann\Timer\ResourceUsageFormatter;
2026-02-25 06:59:34 +00:00
use SebastianBergmann\Timer\Timer;
2026-02-27 00:03:00 +00:00
$timer = new Timer;
$timer->start();
foreach (\range(0, 100000) as $i) {
// ...
}
print (new ResourceUsageFormatter)->resourceUsage($timer->stop());
2026-02-25 06:59:34 +00:00
```
The code above yields the output below:
2026-02-27 00:03:00 +00:00
```
Time: 00:00.002, Memory: 6.00 MB
```
#### Duration since PHP Startup (using unreliable `$_SERVER['REQUEST_TIME_FLOAT']`)
```php
require __DIR__ . '/vendor/autoload.php';
use SebastianBergmann\Timer\ResourceUsageFormatter;
foreach (\range(0, 100000) as $i) {
// ...
}
print (new ResourceUsageFormatter)->resourceUsageSinceStartOfRequest();
```
The code above yields the output below:
```
Time: 00:00.002, Memory: 6.00 MB
```