Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Влияние кол-ва переменных на производительность?


Автор: anurbol 16.4.2010, 19:18
В общем влияет ли количество объявленных переменных, массивов, объектов, на производительность, на время отдачи контента и т.д. ? Недавно в своем движке вывел get_defined_vars и обалдел, страница больше мегабайта получилась. С одной стороны это очень удобно, раз переменные объявлены в главном файле, всегда можно обратиться к ним сразу где бы то ни было, но... влияет ли это как то на быстродействие сайта???

Автор: bars80080 16.4.2010, 19:31
Цитата(anurbol @  16.4.2010,  19:18 Найти цитируемый пост)
В общем влияет ли количество объявленных переменных, массивов, объектов, на производительность, на время отдачи контента и т.д. ?

однозначно да.

насколько сильно? в общем случае очень слабо.
хотя бывают случаи, когда туда-сюда таскают гигантские объёмы данных, да ещё и непрестанно копируют их


Цитата(anurbol @  16.4.2010,  19:18 Найти цитируемый пост)
С одной стороны это очень удобно, раз переменные объявлены в главном файле, всегда можно обратиться к ним сразу где бы то ни было

вот следовало бы очень хорошо подумать над эти "очень удобно". насколько часто у тебя требуется из конца кода обратиться к переменной объявленной в начале?

обычно тянется всего небольшая группа данных, составляющих страницы. а вот всё остальное?

Автор: anurbol 16.4.2010, 19:58
Цитата

вот следовало бы очень хорошо подумать над эти "очень удобно". насколько часто у тебя требуется из конца кода обратиться к переменной объявленной в начале?

 Очень удобно! smile Просто в главном файле инклюдятся все классы, функции, объявляется массив с данными о пользователе и т.д. и т.п. С другой стороны, есть страницы, где вообще показывается только пару строк текста, но тем не менее, если вывести get_defined_vars, то там будет несколько тысяч строк с переменными, что очень пугает, хотя вроде и не чувствуется (обычно генерация страницы не превышает 0.2 сек.) 

Альтернатива как я понимаю - в каждом отдельном файле инклюдить только то, что нужно. но так как система уже настолько навороченная, это такая ж*па, и собственно хочется спросить стоит ли овчинка выделки?

Автор: IgorIV 16.4.2010, 21:24
Цитата(anurbol @  16.4.2010,  20:58 Найти цитируемый пост)
и собственно хочется спросить стоит ли овчинка выделки?

А ты потести siege, увидишь... 

Автор: LeoK 17.4.2010, 09:49
Цитата(anurbol @  16.4.2010,  19:18 Найти цитируемый пост)
С одной стороны это очень удобно, раз переменные объявлены в главном файле, всегда можно обратиться к ним сразу где бы то ни было, но... влияет ли это как то на быстродействие сайта???

видимо у вас много переменных, объявленных в globals... имхо это зло
Данные нужно генерировать в соответствии с контекстом и не таскать за собой кучу ненужного на данный момент

Автор: MoLeX 17.4.2010, 10:21
Цитата(LeoK @  17.4.2010,  09:49 Найти цитируемый пост)
видимо у вас много переменных, объявленных в globals... имхо это зло

Ээ, от куда такой вывод???

Цитата(anurbol @  16.4.2010,  19:58 Найти цитируемый пост)
если вывести get_defined_vars, то там будет несколько тысяч строк с переменными, что очень пугает, хотя вроде и не чувствуется (обычно генерация страницы не превышает 0.2 сек.) 

Плохо спроектировано у вас.

Необходимо посмотреть от каких переменных можно избавиться. Может есть специфические, которые нужны только для отображения формы обратной связи. А вы их вынесли в главный файл.


Цитата(bars80080 @  16.4.2010,  19:31 Найти цитируемый пост)
обычно тянется всего небольшая группа данных, составляющих страницы. а вот всё остальное? 

 smile 

Автор: LeoK 17.4.2010, 10:51
Цитата(MoLeX @  17.4.2010,  10:21 Найти цитируемый пост)
Ээ, от куда такой вывод???

Ну как правило get_defined_vars вызывают в глобальном контексте и никак не в контексте функции либо метода
Насчет проектировки - действительно плохо спроектировано

Автор: nerezus 18.4.2010, 18:41
Не влияет.
На производительность влияют СУБД, косяки в алгоритмах, отсутствие кеширования, тормоза ФС, тормоза сети, кривая настройка сервера, отдача статики неасинхронным сервером и хреновое железо.
Остальные факторы много меньше погрешности и не имеют значения.

Автор: nerezus 18.4.2010, 19:09
Цитата

С одной стороны это очень удобно, раз переменные объявлены в главном файле, всегда можно обратиться к ним сразу где бы то ни было
 Ах да. Самые ужасные ошибки - ошибки проектирования. Ваш код просто отвратителен.

Автор: krundetz 19.4.2010, 08:46
Цитата(anurbol @  16.4.2010,  19:58 Найти цитируемый пост)
Просто в главном файле инклюдятся все классы

посмотрите в сторону заложенной в php возможности автоматически подключать нужные файлы используя функцию __autoload()
в какой то степени она позволит избавиться от:
Цитата(anurbol @  16.4.2010,  19:58 Найти цитируемый пост)
такая ж*па

при переделки системы.

Цитата(nerezus @  18.4.2010,  18:41 Найти цитируемый пост)
Остальные факторы много меньше погрешности и не имеют значения. 

ещё бывает такая вещь как ограничение размера оперативной памяти, вот тогда размер памяти необходимой при выполнение скрипта имеет большое значение, просто сейчас легче купить у хостинга тариф с большим размером выделяемой оперативной памяти


Автор: anurbol 21.4.2010, 05:05
Цитата

Не влияет.
На производительность влияют СУБД, косяки в алгоритмах, отсутствие кеширования, тормоза ФС, тормоза сети, кривая настройка сервера, отдача статики неасинхронным сервером и хреновое железо.
Остальные факторы много меньше погрешности и не имеют значения. 


Такой ответ я и хотел услышать  smile 
Спасибо nerezus ))) 

насчет проектирования - 

Цитата

Цитата


Цитата(anurbol @  16.4.2010,  19:58 Найти цитируемый пост)
если вывести get_defined_vars, то там будет несколько тысяч строк с переменными, что очень пугает, хотя вроде и не чувствуется (обычно генерация страницы не превышает 0.2 сек.) 


Плохо спроектировано у вас.

Необходимо посмотреть от каких переменных можно избавиться. Может есть специфические, которые нужны только для отображения формы обратной связи. А вы их вынесли в главный файл.


А кстати 0.2 это много?? это если учесть что 0.2 сек. это на 2-ядерном локалхосте-денвере с 2 ГБ озу. 

Да специфических очень мало, в основном такие штуки как инфо о текущем пользователе, его курсе валют, его настройках, его друзьях, рейтинге, балансе и т.д. 

MoLex, и Вам спасибо, давно уважаю Вас!

Автор: MoLeX 21.4.2010, 05:57
Цитата(anurbol @  21.4.2010,  05:05 Найти цитируемый пост)
А кстати 0.2 это много?? это если учесть что 0.2 сек. это на 2-ядерном локалхосте-денвере с 2 ГБ озу.

денвер? под виндовс? тогда не много

Автор: nerezus 21.4.2010, 10:50
anurbol, в любом случае сведи количество общеглорбальных переменных к 0.

Автор: lukas 20.9.2010, 22:20
Я думаю на скорость это не влияет абсолютно, потому что один фиг - хеш таблицы (не те что в языке, а те что внутри реализации языка) настолько быстрые, что там хоть миллион переменных будет, все равно поиск будет мгновенный вне зависимости от кол-ва элементов. Это конечно не говорит о том, что большое количество глобальных переменных это хорошо, надо объединять их в массивы, создавать объекты и т.п.

Хех, не заметил  дату поста. Форум по пхп умер?

Автор: MoLeX 21.9.2010, 06:07
Цитата(lukas @  20.9.2010,  22:20 Найти цитируемый пост)
Форум по пхп умер?

нет жив

Автор: bars80080 21.9.2010, 13:49
Цитата(lukas @  20.9.2010,  22:20 Найти цитируемый пост)
Хех, не заметил  дату поста. Форум по пхп умер?

а как вы интересно нашли эту тему? может читаете список тем с десятой страницы?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)