Writing Benchmarks¶
Benchmark classes have the following characteristics:
- The class and filename must be the same.
- Class methods that start with
bench
will be executed by the benchrunner and timed.
PHPBench does not require that the benchmark class be aware of PHPBench library - it does not need to extend a parent class or implement an interface.
The following is a simple benchmark class:
// HashBench.php
class HashBench
{
public function benchMd5()
{
hash('md5', 'Hello World!');
}
public function benchSha1()
{
hash('sha1', 'Hello World!');
}
}
And it can be executed as follows:
$ phpbench run examples/HashBench.php --progress=dots
Running benchmarks.
...
3 subjects, 30 iterations, 30000 revs, 0 rejects
⅀T: 30543μs μSD/r 0.05μs μRSD/r: 4.83%
min mean max: 0.78 1.02 1.47 (μs/r)
Note
The above command does not generate a report, add --report=default
to
view something useful.
PHPBench reads docblock annotations in the benchmark class. Annotations can be placed in the class docblock, or on individual methods docblocks.
Note
Instead of prefixing a method with bench
you can use the
@Subject
annotation or specify a custom pattern.
Benchmark Configuration¶
See the Annotations and Attributes reference to see how you can configure your benchmarks.