An open API service indexing awesome lists of open source software.

https://github.com/nark3d/benchmark

PHP Benchmark tool
https://github.com/nark3d/benchmark

Last synced: about 2 months ago
JSON representation

PHP Benchmark tool

Awesome Lists containing this project

README

        

[![Build Status](https://travis-ci.org/nark3d/Benchmark.svg?branch=master)](https://travis-ci.org/nark3d/Benchmark)
[![Build Status](https://scrutinizer-ci.com/g/nark3d/Benchmark/badges/build.png?b=master)](https://scrutinizer-ci.com/g/nark3d/Benchmark/build-status/master)
[![Code Coverage](https://scrutinizer-ci.com/g/nark3d/Benchmark/badges/coverage.png?b=master)](https://scrutinizer-ci.com/g/nark3d/Benchmark/?branch=master)
[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/nark3d/Benchmark/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/nark3d/Benchmark/?branch=master)
[![SensioLabsInsight](https://insight.sensiolabs.com/projects/7d251e4e-96df-4a50-b6f7-7fa148982678/mini.png)](https://insight.sensiolabs.com/projects/7d251e4e-96df-4a50-b6f7-7fa148982678)
[![Latest Stable Version](https://img.shields.io/packagist/v/best-served-cold/benchmark.svg)](https://packagist.org/packages/best-served-cold/benchmark)

# Benchmark

## Install
```shell
$ composer require best-served-cold/benchmark
```

## Usage
Call in the Benchmark and Output classes
```php
use BestServedCold\Benchmark\Benchmark;
use BestServedCold\Benchmark\Output;
```

Then benchmark a bunch of code:
```php
Benchmark::start();
for ($i = 0; $i <= 100; $i++ ) {
mt_rand(1, 1000);
}
Benchmark::stop();
Output::output(Benchmark::get())->render();
```

Returns something like this:
```shell
+---------------+-------------------+--------------------+
| Name | Metric | Value |
+---------------+-------------------+--------------------+
| 58c4302514614 | MicroTime | 0.0022561550140381 |
| 58c4302514614 | MemoryUsage | 160.05 KB |
| 58c4302514614 | DeclaredInterface | 0 |
| 58c4302514614 | DeclaredTrait | 2 |
| 58c4302514614 | DefinedFunction | 0 |
| 58c4302514614 | DefinedConstant | 0 |
| 58c4302514614 | IncludedFile | 1 |
| 58c4302514614 | DeclaredClass | 0 |
| 58c4302514614 | PeakMemoryUsage | 1.54 MB |
+---------------+-------------------+--------------------+
```

As no $name argument is specified, a hashed name will be given
as means of identification.

## Naming benchmarks
```php
Benchmark::reset(); // Clear existing benchmarks
Benchmark::start('bob');
$a = str_repeat('Hello', 24000);
define('FOO', 'bar');
Benchmark::stop('bob');
Benchmark::start('mary');
require_once('./SomeClass.php');
sleep(1);
Benchmark::stop('mary');
```

Returns something like:
```shell
+------+-------------------+--------------------+
| Name | Metric | Value |
+------+-------------------+--------------------+
| bob | MicroTime | 0.0014297962188721 |
| bob | MemoryUsage | 191.77 KB |
| bob | DeclaredInterface | 0 |
| bob | DeclaredTrait | 0 |
| bob | DefinedFunction | 0 |
| bob | DefinedConstant | 1 |
| bob | IncludedFile | 0 |
| bob | DeclaredClass | 0 |
| bob | PeakMemoryUsage | 2.18 MB |
+------+-------------------+--------------------+
| mary | MicroTime | 1.0012910366058 |
| mary | MemoryUsage | 75.48 KB |
| mary | DeclaredInterface | 0 |
| mary | DeclaredTrait | 0 |
| mary | DefinedFunction | 0 |
| mary | DefinedConstant | 0 |
| mary | IncludedFile | 1 |
| mary | DeclaredClass | 1 |
| mary | PeakMemoryUsage | 2.18 MB |
+------+-------------------+--------------------+
```

## Specifying output interface

```php
Benchmark::reset();
Benchmark::start('susan');
require_once('./SomeTrait.php');
Benchmark::stop('susan');
Output::output(Benchmark::get(), 'apache')->render();
```

Returns something like:




Name


Metric


Value






susan


MicroTime


0.0014090538024902




susan


MemoryUsage


76.03 KB




susan


DeclaredInterface






susan


DeclaredTrait


1




susan


DefinedFunction






susan


DefinedConstant






susan


IncludedFile


1




susan


DeclaredClass






susan


PeakMemoryUsage


2.18 MB