Комментарии 42
Если говорите о большом приросте производительности было бы интересно увидеть какие нибудь конкретные цифры.
Обсуждалось же:)
habrahabr.ru/blogs/zend_framework/73273/
Даже цифры приводились.
habrahabr.ru/blogs/zend_framework/73273/#comment_2105114
В одном моем проекте время генерации уменьшилось с ~0,014 до ~0,008 секунд, при том что там и десятая часть компонентов ZF не используется.
habrahabr.ru/blogs/zend_framework/73273/
Даже цифры приводились.
habrahabr.ru/blogs/zend_framework/73273/#comment_2105114
В одном моем проекте время генерации уменьшилось с ~0,014 до ~0,008 секунд, при том что там и десятая часть компонентов ZF не используется.
У себя на домашнем компе провел эксперимент.
Создал пустой проект ZF. Добавил в конец index.php код типа var_dump(get_required_files()) и все выведенные файлы собрал в один. Удалил в коде все require_once. И заменил в index.php require_once «Zend/Application.php» на свой файлик.
Первоначальные замеры (с множеством файлов) дали время запуска 137мс, после подключения одного файла — 39мс. То есть на лицо повышение производительности в 3 раза.
Создал пустой проект ZF. Добавил в конец index.php код типа var_dump(get_required_files()) и все выведенные файлы собрал в один. Удалил в коде все require_once. И заменил в index.php require_once «Zend/Application.php» на свой файлик.
Первоначальные замеры (с множеством файлов) дали время запуска 137мс, после подключения одного файла — 39мс. То есть на лицо повышение производительности в 3 раза.
да, это кажется невероятным увеличением производительности (В ТРИ РАЗА!!!11), но если задуматься о том, что не одним запуском голого helloworld едины, то возникают вопросы… Так, например, средненький sql запрос сведет всю разницу на нет.
Для больших проектов оптимизация нужна на совершенно иных уровнях, нежели все файлы в один конкатенировать…
Для больших проектов оптимизация нужна на совершенно иных уровнях, нежели все файлы в один конкатенировать…
Предполагается, что программист достаточно хорошо подготовлен, и умеет писать нормальные запросы.
Предполагается, что запросы уже оптимизированы, и счет идет на десятки миллисекунд.
В этом случае объединение в один файл дает хороший прирост (особенно в больших и сложных проектах).
Предполагается, что запросы уже оптимизированы, и счет идет на десятки миллисекунд.
В этом случае объединение в один файл дает хороший прирост (особенно в больших и сложных проектах).
Вообще-то, это увеличение производительности на голом месте, без каких бы то ни было усилий. Кстати, с усложнением проекта, количество файлов, которые необходимо подключать растет пропорционально сложности проекта. Так что такой вид оптимизации нельзя упускать из виду.
Ну а про запросы вам ответили выше.
Ну а про запросы вам ответили выше.
что то получается следующее:
— ставлю «выбрать все»
— кнопка «Загрузить»
— require_once 'Zend.compiled.php' и:
Fatal error: Class 'PHPUnit_Framework_Constraint' not found in ...library\Zend.compiled.php on line 2055
— ставлю «выбрать все»
— кнопка «Загрузить»
— require_once 'Zend.compiled.php' и:
Fatal error: Class 'PHPUnit_Framework_Constraint' not found in ...library\Zend.compiled.php on line 2055
PHPUnit_Framework не входит в Zend_Framework, его нужно ставить отдельно (если он необходим)
а где он необходим и почему обычный ZF его не требует
отключите класс Zend_Test и все его подклассы (надо, к сожалению его раскрывать и удалять отметки для всех подклассов и их подклассов и т.д.)
кстати, да, если отметить не включение класса первого уровня, то все его подклассы всё равно будут собраны
кстати, да, если отметить не включение класса первого уровня, то все его подклассы всё равно будут собраны
Неудобно, если бы я мог загрузить архив исходников приложения, а на выходе получить файл с используемыми классами библиотеки…
Спасибо. Попробую.
Было бы классно, если бы можно было разные ветки выбирать для пакования, а не только 1.10.х
Пытался когда-то сделать класс, который динамически собирает проект в 1 файл, если он ещё не собран, но наткнулся на кучу подводных камней(типа инклюд файла в зависимости от значения переменной). Не знаю как вам удалось их обойти, но работа достойна похвал. Спасибо.
Отличная штука.
Еще бы так другие FW собирать…
Еще бы так другие FW собирать…
Супер, очень пребольшое спасибо
Большое спасибо за сервис, нужная вещь.
Сделал сборку всех классов кроме подветки Zend_Test. Включил в пустой php файл. Получил ошибку:
Fatal error: Cannot redeclare class Zend_InfoCard_Exception_Abstract in Z:\home\dev\www\ZF_1490414277.php on line 1093
Сделал сборку всех классов кроме подветки Zend_Test. Включил в пустой php файл. Получил ошибку:
Fatal error: Cannot redeclare class Zend_InfoCard_Exception_Abstract in Z:\home\dev\www\ZF_1490414277.php on line 1093
Странно, у меня такой ошибки не выдается. Какая у Вас версия PHP?
Я скачал Вашу сборку, на строке 1093:
if (class_exists(«Zend_Exception»)) {abstract class Zend_InfoCard_Exception_Abstract extends Zend_Exception { } }else { abstract class Zend_InfoCard_Exception_Abstract extends Exception { } }class Zend_InfoCard_Exception extends Zend_InfoCard_Exception_Abstract { } class Zend_InfoCard_Adapter_Exception extends Zend_InfoCard_Exception { }
т.е Zend_InfoCard_Exception_Abstract объявляется всего один раз. У меня PHP его успешно парсит как напрямую, так и из инклуда.
Я скачал Вашу сборку, на строке 1093:
if (class_exists(«Zend_Exception»)) {abstract class Zend_InfoCard_Exception_Abstract extends Zend_Exception { } }else { abstract class Zend_InfoCard_Exception_Abstract extends Exception { } }class Zend_InfoCard_Exception extends Zend_InfoCard_Exception_Abstract { } class Zend_InfoCard_Adapter_Exception extends Zend_InfoCard_Exception { }
т.е Zend_InfoCard_Exception_Abstract объявляется всего один раз. У меня PHP его успешно парсит как напрямую, так и из инклуда.
/s/парсит/исполняет
У меня исполнялось на 5.2.4
Потом я убрал всю ветку InfoCard и заработало. Далее убирал азличные ветки и также работало.
Так, что в целом все ок.
Очень желательно выключать вложенные ветки при выключении родителя. Это может сэкономить много времени ;)
Потом я убрал всю ветку InfoCard и заработало. Далее убирал азличные ветки и также работало.
Так, что в целом все ок.
Очень желательно выключать вложенные ветки при выключении родителя. Это может сэкономить много времени ;)
эх, я думал кто-то сделал грамотно и удобно. оказывается еще сыроват сервис
я делал свой инструмент, но он не очень удобный
я делал свой инструмент, но он не очень удобный
а как быть с не php-шными файлами? например, с данными локализации из пакета Zend_Locale
сайт не переваривает файл. Сообщает что памяти нехватило. Изменение настроек пхп не дает ничего. Пхп не перваривает такой файл :( Или нехватает памяти или все падает
вупс! у меня тоже такое было, но после этого я кое-что исправил, и все вылечилось. Какая у Вас сборка (цифры после «ZF_» в имени файла)?
было бы круто еще сохранять конфиги. например сделал сборку — а завтра еще адаптер другой базы понадобилось добавить или другую компоненту — приходится снова по всем веткам проходить. а так загрузил свой конфиг и исправил
Спасибо вам за сервис. У меня кстати сборка выдает ошибку. Описал здесь — zendframework.ru/articles/zend-framework-performance-zf-compiling
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Сервис для сборки Zend Framework в один файл