https://github.com/xp-forge/measure
Measuring API
https://github.com/xp-forge/measure
measure performance php xp-framework
Last synced: 10 months ago
JSON representation
Measuring API
- Host: GitHub
- URL: https://github.com/xp-forge/measure
- Owner: xp-forge
- Created: 2014-09-21T22:21:30.000Z (over 11 years ago)
- Default Branch: master
- Last Pushed: 2022-02-27T09:36:24.000Z (over 4 years ago)
- Last Synced: 2025-07-21T11:49:59.768Z (11 months ago)
- Topics: measure, performance, php, xp-framework
- Language: PHP
- Size: 41 KB
- Stars: 0
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: ChangeLog.md
Awesome Lists containing this project
README
Measure
=======
[](https://github.com/xp-forge/measure/actions)
[](https://github.com/xp-framework/core)
[](https://github.com/xp-framework/core/blob/master/LICENCE.md)
[](http://php.net/)
[](http://php.net/)
[](https://packagist.org/packages/xp-forge/measure)
Measuring performance of different implementations in an xUnit-style way.
Example
-------
```php
use util\profiling\{Measure, Measurable};
class Iteration extends Measurable {
#[Measure]
public function strpos() {
return false === ($p= strpos('abc.', '.')) ? -1 : $p;
}
#[Measure]
public function strcspn() {
return 4 === ($p= strcspn('abc.', '.')) ? -1 : $p;
}
}
```
Running:
```sh
$ xp measure -1000000 Demo
strpos: 1000000 iteration(s), 0.308 seconds, result= 3
strcspn: 1000000 iteration(s), 0.350 seconds, result= 3
```
Permutation
-----------
```php
use util\profiling\{Measure, Measurable, Values};
class Demo extends Measurable {
#[Measure, Values(['', '.', '.a', 'a.', 'a.b'])]
public function strpos($fixture) {
return false === ($p= strpos($fixture, '.')) ? -1 : $p;
}
#[Measure, Values(['', '.', '.a', 'a.', 'a.b'])]
public function strcspn($fixture) {
return strlen($fixture) === ($p= strcspn($fixture, '.')) ? -1 : $p;
}
}
```
Running:
```sh
$ xp measure -1000000 Demo
strpos(""): 1000000 iteration(s), 0.534 seconds, result= -1
strpos("."): 1000000 iteration(s), 0.527 seconds, result= 0
strpos(".a"): 1000000 iteration(s), 0.523 seconds, result= 0
strpos("a."): 1000000 iteration(s), 0.531 seconds, result= 1
strpos("a.b"): 1000000 iteration(s), 0.541 seconds, result= 1
strcspn(""): 1000000 iteration(s), 0.633 seconds, result= -1
strcspn("."): 1000000 iteration(s), 0.617 seconds, result= 0
strcspn(".a"): 1000000 iteration(s), 0.622 seconds, result= 0
strcspn("a."): 1000000 iteration(s), 0.605 seconds, result= 1
strcspn("a.b"): 1000000 iteration(s), 0.613 seconds, result= 1
```