@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 для кеширования.
  • Вопрос задан
  • 14934 просмотра
Решения вопроса 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 нативный код
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы