mirror of
https://github.com/standardebooks/web.git
synced 2025-07-14 02:21:55 -04:00
53 lines
2.1 KiB
Markdown
53 lines
2.1 KiB
Markdown
Performance
|
||
===========
|
||
|
||
Composer's `vendor/autoload.php` file [requires all Safe files](https://github.com/thecodingmachine/safe/blob/05925e1d2abe0c0fee2095c1d569a1302a1a209e/composer.json#L13-L97)
|
||
on each request (since there is [no autoloading for functions in PHP](https://wiki.php.net/rfc/function_autoloading)).
|
||
|
||
"Requiring" those ~84 files in PHP has a performance impact. We used [Blackfire](http://blackfire.io/) to time precisely the impact of loading the PHP files.
|
||
|
||
Results
|
||
-------
|
||
|
||
| ||
|
||
|-----------------------------------------------------------------------------------------------------------|-------|
|
||
|[Composer autoload without Safe](https://blackfire.io/profiles/cb9122ac-69a7-4e90-9ea7-bf7561058815/graph) | 264µs |
|
||
|[Composer autoload with Safe](https://blackfire.io/profiles/35eb02eb-60f8-480a-bad0-0cfc43179c18/graph) | 1.03ms |
|
||
|
||
Safe load time: **~700µs**
|
||
|
||
Only 700µs for loading 84 files containing 1000+ functions. Damn, PHP is fast! Opcache does a very good job.
|
||
|
||
The tests have been performed on a DELL XPS 9550 laptop running Ubuntu 18.04 and Docker. CPU: [Intel(R) Core(TM) i7-6700HQ](https://ark.intel.com/products/88967/Intel-Core-i7-6700HQ-Processor-6M-Cache-up-to-3-50-GHz-)
|
||
|
||
Reproducing the test
|
||
--------------------
|
||
|
||
There are 2 test files:
|
||
|
||
- `test_with_safe/index.php`: loads Composer autoloader with Safe
|
||
- `test_without_safe/index.php`: loads Composer autoloader without Safe
|
||
|
||
Both test files are only loading Composer autoloader (with and without Safe), then echoing "foo".
|
||
|
||
For each file, you need to install the Composer dependencies:
|
||
|
||
```bash
|
||
cd test_with_safe
|
||
composer install
|
||
cd ..
|
||
cd test_without_safe
|
||
composer install
|
||
cd ..
|
||
```
|
||
|
||
A `docker-compose.yml` file is provided to start a PHP 7.2 environment with Blackfire enabled.
|
||
|
||
To start the environment, simply type:
|
||
|
||
```bash
|
||
BLACKFIRE_SERVER_ID=[xyz] BLACKFIRE_SERVER_TOKEN=[abc] docker-compose up
|
||
```
|
||
|
||
You can now browse to `http://localhost:8888/test_with_safe` and `http://localhost:8888/test_without_safe` and profile it using the [Blackfire companion](https://blackfire.io/docs/integrations/firefox)
|
||
|