@Sterk
Программист

Какова производительность yii2 и laravel?

Здравствуйте. Решил заняться изучением веб программирования. Так как являюсь обладателем cubieboard2 - поднял ламп сервер и решил изучать php. Wordpress выдает на нем страничку за 3-5 секунд поэтому решил изучать что то более легковесное.

Сначала попробовал yii2 вроде бы все хорошо. Так как в последнее время отовсюду слышатся крики про laravel, решил его попробовать. Он мне понравился больше, разного рода плюшками из коробки. Да и примеров\готовых решений на данный момент для него больше. Скачал стартовый проект и запустил.

Производительность меня сильно удивила. Генерация простой странички без обращений к бд 1.5-2 секунды. Используя вот этот метод кеширования я получил производительность в районе 1 секунды на запрос. Затем я попробовал пустой проект
composer create-project laravel/laravel your-project-name --prefer-dist
300 миллисекунд для получения пустой вьюшки. Кеширование тем же методом не дает видимых результатов вообще. Сервер держит в районе 12 запросов в секунду.

Я также тестировал yii2. Запрос About метода (текстовая страничка) 200 миллисекунд. С кешированием 50-100. Дальше контроллер, вью, модели получены путем генерации. Без кеширования получаем 3 записи и рисуем табличку(обращение к индекс методу) - в районе 300-400 миллисекунд. С кешированием время падает до 50-100 миллисекунд. Сервер начинает выдерживать 40-50 запросов в секунду.

Кеширование в yii использую такое (для тестирования):
$key = 'ContentController-actionIndex';
        $value = Yii::$app->cache->get($key);
        if ($value === false)
        {
            $searchModel = new ContentSearch;
            $dataProvider = $searchModel->search(Yii::$app->request->getQueryParams());

            $value = $this->render('index', [
                'dataProvider' => $dataProvider,
                'searchModel' => $searchModel,
            ]);
            Yii::$app->cache->set($key, $value, 1000);
        }
        return $value;

Вопрос в том, что я делаю не так с laravel? Можно ли еще ускорить yii2?

Update 1: Использовал APC для кеширования.
  • Вопрос задан
  • 15174 просмотра
Решения вопроса 1
@Sterk Автор вопроса
Программист
Отвечу на свою проблему. Может быть кому то пригодится.
Поставил в VirtualBox Ubuntu Server. Выдал ему 1 ядро моего i7 и 1 гигабайт оперативной памяти.
Сервер спокойно выдерживает 40 и более запросов в секунду(больше не смог сделать потому что не смог настроить апач на стабильную работу, каждый секунд 30 вылазил пик задержки и график времени отдачи сбивался, что мешало наблюдению). В результате пары дней тестирования пришел к выводу, что yii2 несет меньше накладных расходов.
При 40 запросах yii2 для своего шаблона basic выдает страничку за 7.5-10 миллисекунд(загрузка процессора скачет в пределах 20-30%). Пустой Laravel проект с HomeController и 1 вьшкой выдает страничку за 10-15 миллисекунд(загрузка процессора скачет в пределах 30-40%). При этом даже при настроенных(на неиспользование hdd - apc driver) кеширование и сессиях есть использование hdd, что в случае с Linux сервером на SD карте вызывает проблемы.
Lavarel требует в 1.5-2 раза больше времени на выполнение самого простого сценария - запроса 1 метода с возвратом простейшей вьюшки.

Полученная статистика скорее всего совершенно не важна для обычных серверов, но в моем случае говорит не в пользу Laravel.
Ответ написан
Пригласить эксперта
Ответы на вопрос 5
sanchezzzhak
@sanchezzzhak
Ля ля ля...
Yii можно ускорить выключить log и настроить другой кеш адаптер.

Laravel такой же херней страдает, log адаптер для кеша. сессии на куки сменить должно прибавить скорости.

Я очень люблю Yii2 и все больше нравится с каждым коммитом, использую в личных проектах.

Laravel использую на работе и за некого количество проектов, которые нужно поддерживать. + команде проще, когда нет зоопарка фреймворков.
Ответ написан
Комментировать
SamDark
@SamDark
Yii2 core team
Ещё вот кусочек официального гайда на тему: www.yiiframework.com/doc-2.0/guide-performance.html
Ответ написан
Комментировать
opium
@opium
Просто люблю качественно работать
Хех смешной вы
То что вы что то не умете готовить не говорит о том что оно медленное
www.webpagetest.org/result/140620_HV_E8S
первый байт через 141 миллисекунду
Ответ написан
Mycelin
@Mycelin
Эквиумист
141 миллисекунда — чудовищно медленно для простой страницы.
Я выбрал laravel потому, что он отвечает в пределах 50 мс.
Ответ написан
@nimda13
Сделал простую страничку с дефолтными конфигами на моём домашнем тормознутом сервере. Мои результаты

1.4 секи ларавел
0.5 секи yii
0.03 нативный код
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы