Я часто использую Micro & Router, поэтому я решил заняться эталоном. Этот эталон сделал благодаря (@kenjis) Php-Framework-Benchmark. Я изменил AB на AWK, добавлена в таблицу «тип структуры» и кое -что еще ...
! Benchmark с помощью wrk https://github.com/wg/wrk
Этот проект пытается измерить минимальные накладные расходы (минимальная стоимость начальной загрузки) рамки PHP в реальном мире.
Поэтому я думаю, что минимальные приложения для теста не должны включать:
Компоненты, такие как Template Engine или ORM/библиотеки базы данных, находятся вне объема в этом проекте.
Это master -филиал.
--optimize-autoloader .Некоторые люди могут подумать, что использование конфигурации по умолчанию не справедливо. Но я думаю, что конфигурация по умолчанию Framework является утверждением того, что она есть. Конфигурация по умолчанию является хорошей отправной точкой, чтобы узнать структуру. И я не могу оптимизировать все рамки. Некоторые рамки оптимизированы, некоторые не являются, это несправедливо. Поэтому я не удаляю никаких компонентов/конфигураций.
Но если вы заинтересованы в сравнительном анализе с оптимизацией (удаление компонентов/конфигураций, которые не используются), см. Оптимизируйте ветвь.
Если вы найдете что -то не так с моим кодом, пожалуйста, не стесняйтесь отправлять запросы на привлечение. Но обратите внимание, оптимизируйте только для "Hello World!" недопустимо. Строительство самого быстрого "Hello World!" Приложение не является целью в этом проекте.
Это мои тесты, а не ваши. Я призываю вас работать в вашей (производственной эквивалентной) средах. (2019/01/27)
Показать диаграммы 



Centos 7.6 мой сервер
| рамки | запросы в секунду | родственник | пиковая память | родственник | файлы | тип |
|---|---|---|---|---|---|---|
| без кадров | 11 742,54 | 19.7 | 0,41 | 1.0 | 1 | без кадров |
| Altorouter | 3619,92 | 6.1 | 0,50 | 1.2 | 6 | маршрутизатор |
| PHP-роутер | 3358,57 | 5.6 | 0,52 | 1.3 | 8 | маршрутизатор |
| Fastroute | 2463,59 | 4.1 | 0,55 | 1.3 | 15 | маршрутизатор |
| полет | 1 660,40 | 2.8 | 0,68 | 1.6 | 15 | микро |
| навык | 1617,18 | 2.7 | 0,66 | 1.6 | 16 | микро |
| Лимонада | 1439,16 | 2.4 | 1.02 | 2.5 | 6 | микро |
| Силер-1,3 | 1397,18 | 2.3 | 0,88 | 2.1 | 22 | микро |
| Klein.php | 1 271,65 | 2.1 | 0,78 | 1.9 | 20 | маршрутизатор |
| Bearframework | 1 065,35 | 1.8 | 0,94 | 2.3 | 22 | микро |
| Fatfree | 1 049.13 | 1.8 | 1,50 | 3.6 | 6 | микро |
| Slim -3.x | 595.05 | 1.0 | 1.39 | 3.4 | 56 | микро |
macos mojave 10.14.2 мой рабочий стол
| рамки | запросы в секунду | родственник | пиковая память | родственник | файлы | тип |
|---|---|---|---|---|---|---|
| без кадров | 4573,15 | 7.2 | 0,37 | 1.0 | 1 | без кадров |
| Altorouter | 2617,56 | 4.1 | 0,47 | 1.3 | 6 | маршрутизатор |
| PHP-роутер | 2417,23 | 3.8 | 0,47 | 1.3 | 8 | маршрутизатор |
| Fastroute | 1947,44 | 3.1 | 0,51 | 1.4 | 15 | маршрутизатор |
| полет | 1545,02 | 2.4 | 0,63 | 1.7 | 15 | микро |
| навык | 1410,26 | 2.2 | 0,61 | 1.6 | 16 | микро |
| Силер-1,3 | 1330,79 | 2.1 | 0,77 | 2.1 | 22 | микро |
| Klein.php | 1246,66 | 2.0 | 0,74 | 2.0 | 20 | маршрутизатор |
| Лимонада | 1193,01 | 1.9 | 1,00 | 2.7 | 6 | микро |
| Bearframework | 1,108,75 | 1.8 | 0,90 | 2.4 | 22 | микро |
| Fatfree | 1 062,73 | 1.7 | 1.44 | 3.9 | 6 | микро |
| Slim -3.x | 631.79 | 1.0 | 1.31 | 3.5 | 56 | микро |
ПРИМЕЧАНИЕ (1): эти тесты ограничены wrk https://github.com/wg/wrk.
Установите исходный код как http: // localhost/php-micro-router-framework-benchmark/:
$ git clone https://github.com/dejurin/php-micro-router-framework-benchmark.git
$ cd php-micro-router-framework-benchmark
$ bash setup.sh
Запустите тесты:
$ bash benchmark.sh
См. Http: // localhost/php-micro-router-framework-benchmark/.
Если вы хотите сравнить некоторые рамки:
$ bash setup.sh PHP-Router/ flight/ lumen/
$ bash benchmark.sh PHP-Router/ flight/ lumen/
Я добавил ниже в /etc/sysctl.conf
# Added
net.netfilter.nf_conntrack_max = 100000
net.nf_conntrack_max = 100000
net.ipv4.tcp_max_tw_buckets = 180000
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 10
и запустить sudo sysctl -p .
Если вы хотите увидеть текущую конфигурацию, запустите sudo sysctl -a .