Рубрики
Uncategorized

Неавторитетное тестирование производительности основных фреймворков PHP

Автор оригинала: David Wong.

Неавторитетное тестирование производительности основных фреймворков PHP

Как разработчик PHP и разработчик технологий в команде стартапов, выбор платформы разработки-сложная задача.

используйте ThinkPHP Если это так, то можно начать набор разработчика, который только что закончил учебный институт, но разделение производительности и пост-кода-это головная боль. Однако многие сторонние функции не обязательно должны быть написаны сами по себе, и многие Дэниелы проложили путь.

используйте Laravel Легенда гласит, что он прост в написании и достаточно масштабируем, но стоимость обучения немного высока. Это не может дать младшим разработчикам полмесяца на изучение фреймворка. И говорят, что люди из рек и озер просочились. Laravel Производительность не очень хорошая, а документация не особенно богата.

использовать Yii Если грамматика многословна, разделение кода на интерфейсе немного проблематично, но производительность очень хорошая, и ее использовали многие крупные отечественные компании, поэтому вы можете быстро найти Даниэля, чтобы ответить на вопросы.

Лучше провести простую оценку производительности. Всегда нет ошибки в выборе человека с отличной производительностью.

тестирование производительности

  • Время тестирования: 06 мая 2016

  • Инструменты тестирования: осада (Из-за системы MAC ab Так всегда бывает. pr_socket_recv: Сброс соединения одноранговым узлом (54) Ошибка, поэтому выберите осада )

  • Тестовая машина: процессор Mac Pro Core i5/8 ГБ памяти/256 ГБ SSD-накопителя

  • Тестовая среда: Apache PHP 5.6

  • Версия фреймворка: ThinkPHP 3.2.3 Ларавель 5.2 Yii2.0.5

  • Принцип тестирования: Пять циклов тестирования со средними данными

Дополнительное примечание: Все элементы разрешены в подкаталогах

Объяснение результатов

Transactions: 2119 hits total number of requests processed
Availability: 96.85% availability
Elapsed time: 9.74 secs run time
Data transfer: 1.31 MB data transfer
Response time: 0.60 secs response time
Transaction rate: 217.56 trans/sec per second processing efficiency
Throughput: 0.13 MB/sec for data processing per second
Concurrency: 130.28 Concurrency
Successful transactions: 2162 successful requests
Failed transactions: 69 failed requests
Longest transaction: 2.85 longest single request
Shortest transaction: 0.01 shortest single request

Начните тестирование

Добавьте контроллер и введите 10 000 раз Hello World в контроллер

Одновременные 50 циклов 10 раз:

Первое, что пришло нам в голову, был ThinkPHP, который казался нормальным.

Transactions:                 500 hits
Availability:              100.00 %
Elapsed time:                2.81 secs
Data transferred:           52.45 MB
Response time:                0.26 secs
Transaction rate:          177.94 trans/sec
Throughput:               18.67 MB/sec
Concurrency:               47.10
Successful transactions:         500
Failed transactions:               0
Longest transaction:            0.48
Shortest transaction:            0.03

Тогда Ларавел, гм, немного разочарован.

Transactions:                 500 hits
Availability:              100.00 %
Elapsed time:               13.33 secs
Data transferred:           52.45 MB
Response time:                1.27 secs
Transaction rate:           37.51 trans/sec
Throughput:                3.93 MB/sec
Concurrency:               47.55
Successful transactions:         500
Failed transactions:               0
Longest transaction:            3.64
Shortest transaction:            0.07

Йии, лучший игрок перед финальным матчем

Transactions:                 500 hits
Availability:              100.00 %
Elapsed time:                4.84 secs
Data transferred:           52.45 MB
Response time:                0.46 secs
Transaction rate:          103.31 trans/sec
Throughput:               10.84 MB/sec
Concurrency:               47.65
Successful transactions:         500
Failed transactions:               0
Longest transaction:            0.88
Shortest transaction:            0.04

Одновременные 200 циклов 10 раз:

Во-первых, подумайте об этом

Transactions:                1977 hits
Availability:               98.85 %
Elapsed time:               10.03 secs
Data transferred:          207.40 MB
Response time:                0.95 secs
Transaction rate:          197.11 trans/sec
Throughput:               20.68 MB/sec
Concurrency:              187.68
Successful transactions:        1977
Failed transactions:              23
Longest transaction:            1.22
Shortest transaction:            0.02

Затем Ларавель

Transactions:                1890 hits
Availability:               94.50 %
Elapsed time:               51.85 secs
Data transferred:          198.27 MB
Response time:                4.88 secs
Transaction rate:           36.45 trans/sec
Throughput:                3.82 MB/sec
Concurrency:              178.00
Successful transactions:        1890
Failed transactions:             110
Longest transaction:           26.01
Shortest transaction:            0.07

Наконец, Йии

Transactions:                1996 hits
Availability:               99.80 %
Elapsed time:               18.95 secs
Data transferred:          209.39 MB
Response time:                1.79 secs
Transaction rate:          105.33 trans/sec
Throughput:               11.05 MB/sec
Concurrency:              188.57
Successful transactions:        1996
Failed transactions:               4
Longest transaction:            3.29
Shortest transaction:            0.10

Неожиданно, без оптимизации, ThinkPHP оказался самым быстрым, Yii был немного больше, и Laravel, спотыкаясь, прошел тест. Результаты несколько неожиданны, но приведенные выше тесты представляют только среду разработки. Фреймворк будет оптимизирован для имитации онлайн-среды.

Оптимизация Структуры

Думайфп:

Change APP_DEBUG to false

Ларавель:

Change APP_DEBUG to false
php artisan route:cache
php artisan optimize
php artisan config:cache
composer dumpautoload -o

Йии:

Change YII_DEBUG to false
composer dumpautoload -o

Одновременные 200 циклов 10 раз:

Думайфп

Transactions:                1655 hits
Availability:               82.75 %
Elapsed time:                8.21 secs
Data transferred:          173.62 MB
Response time:                0.69 secs
Transaction rate:          201.58 trans/sec
Throughput:               21.15 MB/sec
Concurrency:              139.29
Successful transactions:        1655
Failed transactions:             345
Longest transaction:            7.83
Shortest transaction:            0.00

Ларавель:

Transactions:                1520 hits
Availability:               76.00 %
Elapsed time:               34.95 secs
Data transferred:          159.45 MB
Response time:                3.15 secs
Transaction rate:           43.49 trans/sec
Throughput:                4.56 MB/sec
Concurrency:              136.84
Successful transactions:        1520
Failed transactions:             480
Longest transaction:           19.18
Shortest transaction:            0.00

Йии:

Transactions:                1704 hits
Availability:               85.20 %
Elapsed time:               15.16 secs
Data transferred:          178.76 MB
Response time:                1.46 secs
Transaction rate:          112.40 trans/sec
Throughput:               11.79 MB/sec
Concurrency:              164.21
Successful transactions:        1704
Failed transactions:             296
Longest transaction:            9.04
Shortest transaction:            0.00

Как ни странно, когда фреймворк отключает режим отладки, происходит больше сбоев. Однако очевидно, что производительность Laravel значительно улучшилась после простой оптимизации, но она все еще ниже, чем у двух других фреймворков.

заключение

В ходе теста все остальное мое настроение было подавленным. Я чувствовал, что мои три взгляда на мир рухнули и рухнули до основания.

  • ThinkPHP работает в два раза лучше, чем Yii, и почти в четыре раза лучше, чем Laravel.

  • Производительность Yii умеренная, но при тестировании очевидно, что запросы отказывают меньше, чем в двух других фреймворках

  • Laravel по-прежнему элегантен, но его производительность вызывает беспокойство, что лучше описывается пользователями сети. Те, кто учится, те, кто живет, те, кто использует, и те, кто умирает

Последний

Мой проект, наконец, использует самодельный фреймворк для разработки, благодаря мощному композитору процесс разработки проходит очень гладко. Наконец, я прикрепляю данные самодельной платформы за 200 одновременных 10 циклов. Фреймворк с открытым исходным кодом, но обновление занято. Добро пожаловать в searchPP PHP на github и создайте фреймворк вместе со мной.

Transactions:                1672 hits
Availability:               83.60 %
Elapsed time:                6.18 secs
Data transferred:          175.40 MB
Response time:                0.57 secs
Transaction rate:          270.55 trans/sec
Throughput:               28.38 MB/sec
Concurrency:              153.16
Successful transactions:        1672
Failed transactions:             328
Longest transaction:            4.57
Shortest transaction:            0.01