Задать вопрос
@MdaUZH

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

Всем привет, возник вопрос.
Качество или скорость?

В рамках разумного...

Имеется ввиду, например:
Есть классы:
  1. Автозагрузчик
  2. Приложение
  3. httpRequest
  4. httpResponse


каждый класс в отдельном файле.
Провел тестирования ab
1. (ab -c 100 -n 1000 http..)
    Результаты:
    за секунду обработать 86 запросов.
2. Загрузка в браузере (microtime, memory usage)
    Результаты:
    на выполнение 1 сценария требуется: 0.026 сек и 416,77 кБ памяти


Сделал так:
Запихнул все эти классы в 1 общий файл(т.к они при любом сценарии они подгружаются)

Провел снова тесты:
1. ab - 101 запрос в секунду
2. браузер 0.03 сек и 405,5 кБ памяти


Скорее всего тесты проводят не так и результаты очень грубые и т.д

Ну дак в чем собственно вопрос, стоит ли делать подобные жертвы ради производительности?
Почему?

Буду очень благодарен за ответ, всем спасибо)

* дополнил:
Сколько в среднем у вас выделяется памяти на сценарий и сколько времени это занимает?
  • Вопрос задан
  • 206 просмотров
Подписаться 2 Оценить Комментировать
Решение пользователя Сергей Протько К ответам на вопрос (3)
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Ну дак в чем собственно вопрос, стоит ли делать подобные жертвы ради производительности?


Нет, достаточно просто настроить opcache нормально:

1) использовать автозагрузчик который генерит вам composer (обязательно с флагом -o, тогда он сдампит жирную мэпу классов и не будет дергать файловую систему просто так)

2) Отключить инвалидацию кэша в opcache (opcache.validate_timestamps=0) и сбрасывать кэш вручную при деплое

3) проверить через API opcache как там по выделенным ресурсам. Для вашего теста скорее всего дефолта хватит за глаза. Для больших проектов уже можно поиграться с размерами буферов. Читать в документации о функциях opcache что бы статистику собирать.

4) обновитесь до php7

p.s. среднее время ответа для простеньких запросов - 30ms, память - 10-15Mb. Если запускать симфони в php-pm, то запросы отдаются за ~10-15ms, потребление памяти на запрос посчитать немогу (так как все запущено как демон). Но этот вариант пока рекомендую для очень простых апишек где нужна скорость реакции системы.
Ответ написан