Неавторитетное тестирование производительности основных фреймворков PHP
Как разработчик PHP и разработчик технологий в команде стартапов, выбор платформы разработки-сложная задача.
используйте ThinkPHP
Если это так, то можно начать набор разработчика, который только что закончил учебный институт, но разделение производительности и пост-кода-это головная боль. Однако многие сторонние функции не обязательно должны быть написаны сами по себе, и многие Дэниелы проложили путь.
используйте Laravel
Легенда гласит, что он прост в написании и достаточно масштабируем, но стоимость обучения немного высока. Это не может дать младшим разработчикам полмесяца на изучение фреймворка. И говорят, что люди из рек и озер просочились. Laravel
Производительность не очень хорошая, а документация не особенно богата.
использовать Yii
Если грамматика многословна, разделение кода на интерфейсе немного проблематично, но производительность очень хорошая, и ее использовали многие крупные отечественные компании, поэтому вы можете быстро найти Даниэля, чтобы ответить на вопросы.
Лучше провести простую оценку производительности. Всегда нет ошибки в выборе человека с отличной производительностью.
тестирование производительности
Время тестирования: 06 мая 2016
Инструменты тестирования:
осада
(Из-за системы MACab
Так всегда бывает.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