Подскажите будет ли более высокая производительность, если каждую функцию (для каждой функции создавать отдельный класс и использовать __autoload) засовывать в отдельный файл, например: допустим есть сайт, на нем есть div в который мы вставляем или форму для входа или форму с пользовательскими данными (выглядит это примерно как на mail.ru) получается у нас есть 3 функции, первая проверяет авторизованный ли пользователь, если да вызывает вторую функцию, которая выводит форму авторизованного пользователя, если нет, выводит форму для входа. как будет производительнее в данном случае, создать 3 класса и распихать их по трем файлам и использовать __autoload файл auth.php Код (Text): <?php class auth { static function check() { if ( /* пользователь авторизован */ ) { user_form::get(); } else { login_form::get(); } } } ?> файл user_form.php Код (Text): <?php class user_form { static function get() { ?> /* тут html форма пользователя со ссылками на редактирование профиля, личные сообщения и т.д. */ <?php } } ?> файл login_form.php Код (Text): <?php class login_form { static function get() { ?> /* тут html форма для входа пользователя */ <?php } } ?> или держать это все одном файле, в одном классе?
Re: Вопрос производительности - много мелких файлов с функци При таком понимании ООП лучше вообще писать без классов. По-моему, на производительности мало отражается количество файлов. Держать каждую функцию в своём файле - смысла нет, скидывать 200 штук в один - тоже. Надо рассовывать функции по файлам с каким-то смыслом - в одном файле функции по работе с изображениями, в другом - с постами, и т.п.
Re: Вопрос производительности - много мелких файлов с функци Вообще я изначально писал без классов, используя только функции, но потом возникла проблема подключения файлов, по этому пришлось перейти на классы и статические методы из-за функции __autoload 200 функций это хорошо, но если не планируется 200 функций, а допустим не более 30 т.е. допустимо каждую держать в отдельном файле. тогда как? интересует исключительно вопрос производительности.
Re: Вопрос производительности - много мелких файлов с функци производительность снижается при дроблении на много файлов. но есть кое-что поважнее: логичная структура папок и файлов облегчает изучение и последующее сопровождение.
Re: Вопрос производительности - много мелких файлов с функци А нафига вам на 30 функций автолоад? Это для огромных систем классов удобно. А так 30 функций можно на 6-7 файлов раскидать и включать require_once()
Re: Вопрос производительности - много мелких файлов с функци Изначально я использовал require_once() потом начал немного "плыть" в них и решил отказаться в пользу автолоад.
Re: Вопрос производительности - много мелких файлов с функци ну может больше, факт в том, что я поплыл и решил отказаться от просто фукций Ну я как понимаю то, чем я интересуюсь ни кто не практикует и даже не интересует, значит лучше таким не заниматься
Re: Вопрос производительности - много мелких файлов с функци Если реквайры поплыли, значит логики в архитектуре нет вовсе. Когда есть логика в строении системы, не надо ничего помнить, ничего не поплывет. Достаточно знать правила, по которым она работает, и тогда все очень легко найти и осмыслить. Если же у вас макароны по простыням размазало, то ООП вообще противопоказано. Вы откроете врата программерского ада и пустите на сервер силы Хаоса. Далее. Инклуд пустого файла эквивалентен ~26 вызовам/возвратам пустой функции (эмпирические данные). Как думаете, разнеся 30 функций по отдельным классам и по файлам, вы сильно что-то выиграете? Дробление процедурного кода на файлы должно отвечать двум критериям: 1) Максимальная независимость. Если у вас вероятность подключения каких-то функций при работе других 100%, то выделяя их в отдельный класс и файл, вы стреляете себе в ногу. Проще объединять в файл по нескольку функций с максимальной вероятностью связанности. И отсюда вытекает второй пункт: 2) Группировка по назначению. Если комплекс функций обслуживает, скажем, работу с бд, глупо их разносить по разным классам и файлам тем более. У вас проект заболел. И вы, вместо того, чтобы поставить диагноз и начать точное лечение, пихаете его всеми таблетками, что нашли дома. В лучшем случае оставите инвалидом.
Re: Вопрос производительности - много мелких файлов с функци Fell-x27 спасибо за информацию, это как раз то что я хотел слышать: Код (Text): Далее. Инклуд пустого файла эквивалентен ~26 вызовам/возвратам пустой функции (эмпирические данные). Как думаете, разнеся 30 функций по отдельным классам и по файлам, вы сильно что-то выиграете? В этом то и заключается вопрос. Вообще это мой первый проект, изучил книгу по php, решил пополнить свои знания и протестировать их, по этому это скорее не болезнь а обучение.
Re: Вопрос производительности - много мелких файлов с функци Ну...на ранних стадиях развития архитектура может пересматриваться и переписываться много раз. Так что дерзай.
Re: Вопрос производительности - много мелких файлов с функци Тут дело не в архитектуре, а в подходе: или взаимосвязанные функции держать в одном файле, он подключается и эти функции взаимодействуют между собой, при этом возможно некоторые функции не будут задействованы, или же каждая функция будет в отдельном файле, и при необходимости использования той или иной функции, будет подключаться файл с этой функцией и потом будет вызываться эта функция. Вопрос что будет более производительно, как я понимаю вариант 1 будет более производителен. К примеру есть 3 функции, каждая из них, если ее засунуть в отдельный файл, будет занимать 1 кб или если их держать в одном этот файл, то этот файл будет занимать 3 кб. Вопрос что производительнее, подключить 1 раза файл на 3 кб или подключить 2 файла каждый из которых будет по 1 кб (в общей сложности 2 кб) количество файлов и их размеры придуманы и не имеют под собой какого то основания, это просто пример. Я пока в таком не разбираюсь
Re: Вопрос производительности - много мелких файлов с функци 1 раз на 3 кб. И да, если под аккселератором, то вообще пофигу. Точнее как..остается оверхед именно на инклуд, но он настолько ничтожен, что его нет.