sandermuller / stopwatch
Stopwatch to measure execution times (profile code) for Laravel and PHP projects
Installs: 18 445
Dependents: 0
Suggesters: 0
Security: 0
Stars: 5
Watchers: 1
Forks: 0
Open Issues: 0
Requires
- php: ^8.3
- illuminate/collections: ^11.0|^12.0
- illuminate/support: ^11.0|^12.0
- nesbot/carbon: ^2|^3.10.3
- spatie/laravel-package-tools: ^1.92.7
- symfony/var-dumper: ^7.3.3
Requires (Dev)
- laravel/pint: ^1.24
- nunomaduro/collision: ^8.8.2
- orchestra/testbench: ^9.6|^10.6
- phpstan/extension-installer: ^1.4.3
- phpstan/phpstan: ^2.1.25
- phpstan/phpstan-deprecation-rules: ^2.0.3
- phpstan/phpstan-strict-rules: ^2.0.6
- rector/rector: ^2.1.7
- rector/type-perfect: ^2.1
- roave/security-advisories: dev-latest
- spaze/phpstan-disallowed-calls: ^4.6
- symplify/phpstan-extensions: ^12.0.1
- tomasvotruba/cognitive-complexity: ^1.0
- tomasvotruba/type-coverage: ^2.0.2
README
Easily profile of parts of your application/code and measure the performance to expose the bottlenecks
Installation
You can install the package via composer:
composer require sandermuller/stopwatch
Usage
Start the stopwatch
stopwatch()->start();
Add a lap/checkpoint
stopwatch()->start(); stopwatch()->checkpoint('First checkpoint'); // Or stopwatch()->lap('Second checkpoint');
Send the timing directly to your log file
stopwatch()->start(); stopwatch()->log('Second checkpoint');
Display the total run duration
stopwatch()->start(); // Do something echo stopwatch()->toString(); // Echoes something like: 116ms
Render as HTML
Render a neat HTML output showing the total execution time, each checkpoint and the time between each checkpoint.
The checkpoints that took up most of the time will be highlighted.
stopwatch()->start(); // Do something stopwatch()->checkpoint('First checkpoint'); // Do something more stopwatch()->checkpoint('Second checkpoint'); // Render the output {{ stopwatch()->render() }}
Manually stop the stopwatch
You can manually stop the stopwatch, but it will also stop automatically when the Stopwatch output is used (e.g. when you echo the Stopwatch object or call ->totalRunDuration()
).
stopwatch()->start(); // Do something stopwatch()->checkpoint('First checkpoint'); // Stop the stopwatch stopwatch()->stop(); // Do something else you don't want to measure // Finally render the output {{ stopwatch()->render() }}