|
| Дата |
|
USD/RUB | 88.4375 | BTC/USD | 67606.5683 |
|
|
|
Скрипты, программы и технические решения Обсуждаем скрипты, программы и новые технологии. |
29.05.2013, 18:04
|
Start Post: PHP - сэкономит ли ресурсы уменшение кода?
|
Жидорептилия с Зазеркалья
Регистрация: 19.03.2009
Сообщений: 502
Бабло: $102762
|
Бразы, сэкономит ли какие-либо ресурсы сервера (трафик, время, ...) простое уменшение кода? То есть тупо вырезать все пробелы и переносы строк, функции и переменные назвать коротко (не "funktsiya" а "f") и т.д. т.е сократить код не оптимизуруя его с точки зрения алгоритма.
Например писать код не так:
PHP код:
<?php
function funct() {
$funktsiya = 100;
echo "<h4>$funktsiya</h4>";
}
funct();
?>
а как-то так:
PHP код:
<?php
function funct() {$f = 100;echo "<h4>$f</h4>";}
funct();
?>
Файл предполагается небольшой, строк 200-300. Много ли я сэкономлю таким образом и что именно будет экономиться?
|
|
|
29.05.2013, 23:29
|
#12
|
Ебланнед
Регистрация: 09.04.2007
Адрес: Ukraine - EU
Сообщений: 147
Бабло: $38738
|
Два года назад случайно нашел статью на русском, там про зависимость времени выполнения ПХП от красоты кода. Некоторые результаты впечатлили. Естественно, разница видна в циклах многотысячных. УРЛ не вспомню, но точно помню, что имя переменной самое быстрое 2-8 символов, циклы foreach() намного медленней чем просто for(). Всего там примерно с десяток гипотез с замерами влияния.
UPD
вот она http://php.spb.ru/php/speed.html
|
|
|
30.05.2013, 00:13
|
#13
|
главный злодей гофака
Регистрация: 18.06.2007
Сообщений: 5,737
Бабло: $953848
|
Цитата:
Сообщение от F17
Два года назад случайно нашел статью на русском, там про зависимость времени выполнения ПХП от красоты кода. Некоторые результаты впечатлили. Естественно, разница видна в циклах многотысячных. УРЛ не вспомню, но точно помню, что имя переменной самое быстрое 2-8 символов, циклы foreach() намного медленней чем просто for(). Всего там примерно с десяток гипотез с замерами влияния.
UPD
вот она http://php.spb.ru/php/speed.html
|
это тесты 2001 года
__________________
|
|
|
30.05.2013, 00:44
|
#14
|
кодер-энтузиаст
Регистрация: 04.04.2007
Адрес: Джамайка
Сообщений: 3,378
Бабло: $447150
|
Да-да, это она, та самая мякотка.
Цитата:
никогда не пишите $a="$b", ибо это затормозит программу (в этой строке) на 40%.
|
Как говорят наши коллеги-иностранцы в подобных случаях - "моя жопа!"
|
|
|
31.05.2013, 17:23
|
#15
|
автоматизирую интернеты
Регистрация: 05.07.2009
Адрес: chesser.ru
Сообщений: 3,356
Бабло: $470735
|
Цитата:
Сообщение от F17
|
да!!! вот ее я читал в 2003 году, когда начал изучать php. Раньше такое было актуально, да и то не особо.
по сабжу: приведенные примеры оптимизаций бесполезны, но я уверен на 100%, что в коде есть гораздо более страшные вещи, чем пробельчики. Особенно это касается переключения контекста и выход php во внешний мир: в БД, сеть, файлы.
|
|
|
31.05.2013, 20:45
|
#16
|
Пионер
Регистрация: 21.12.2007
Сообщений: 197
Бабло: $37745
|
Я до сих пор многим вещам оттуда следую, в которых чувствую оправданность. Главное без фанатизма
Про кавычки, да)
К примеру, нафига делать так для pure текста:
$a = "Вася любит мамбу";
если это будет реально правильнее:
$a = 'И Сережа тоже';
Это все равно как в C: "Подумаешь, int и long int - без разницы, и то и то целочисленное".
__________________
|
|
|
31.05.2013, 21:06
|
#17
|
Сеньор Член
Регистрация: 11.04.2007
Адрес: The World
Сообщений: 1,125
Бабло: $107796
|
Цитата:
Сообщение от arma
Про кавычки, да)
К примеру, нафига делать так для pure текста:
$a = "Вася любит мамбу";
если это будет реально правильнее:
$a = 'И Сережа тоже';
Это все равно как в C: "Подумаешь, int и long int - без разницы, и то и то целочисленное".
|
с интами можно напороться на переполнение, со строками ошибок возможных не возникает от способа объявления. так что более верная аналогия - это в какую монаду упаковать результат, Option или Either
|
|
|
31.05.2013, 21:16
|
#18
|
Читатель
Регистрация: 23.11.2007
Сообщений: 420
Бабло: $48745
|
Цитата:
А при трафе ~100k/daily тоже нет смысла так делать? (уменьшать количество знаков кода)
|
Нет, и я присоединяюсь - это фейспалм вопрос.
Уменьшать имеет смысл количество инклудов, поэтому многие фреймворки дают возможность подключать их как один здоровый файл (с акселератором это не страшно)
Вот вы мне скажите, в чем я не прав.
Я довольно часто сталкиваюсь с различными задачами и вопросами, решение которых я или не знаю, или справедливо полагаю что не могу сам догадаться "как правильней будет...".
И как то с самых первых шагов я привык: а) искать все в гугле, б) искать опыт людей которые эту задачу УЖЕ решали, с) анализировать делать вывод и решать задачу уже с полученной инфой.
Спрашивать на форуме "а какие кавычки лучше" мне в страшном сне не приснилось бы даже когда я писал свой первый скрипт, так как это просто неоптимально по затратам времени - пока я пишу посты и читаю флуд, я сам все сто раз найду прочитаю и пойму.
Тоже самое и с технологиями: если стоит задача для которой надо выбрать и изучить какую либо новую технологию, я знаю что максимум за день я всю инфу найду, проанализирую и приду к какому то решению, что делать дальше (что выбрать, что изучать, насколько это легко, где документация, чем пользуются люди и т.п.).
И когда я вижу "кодера \ программиста" который спрашивает на форуме 100% фейспалмные вещи, про которые выяснить в гугле ответ - дело 2х минут, у меня возникает некий диссонанс в картине мира. И таких вопросов я видел немало.
Так вот вопрос после этой стены текста, которую вряд ли кто прочитал,: это просто народ такой "особенный" или я?
|
|
|
31.05.2013, 21:49
|
#19
|
Ебланнед
Регистрация: 28.05.2013
Сообщений: 44
Бабло: $70920
|
Цитата:
Сообщение от F17
Два года назад случайно нашел статью на русском, там про зависимость времени выполнения ПХП от красоты кода. Некоторые результаты впечатлили. Естественно, разница видна в циклах многотысячных. УРЛ не вспомню, но точно помню, что имя переменной самое быстрое 2-8 символов, циклы foreach() намного медленней чем просто for(). Всего там примерно с десяток гипотез с замерами влияния.
UPD
вот она http://php.spb.ru/php/speed.html
|
foreach медленнее for не потому, что for 3 буквы, а foreach 7
foreach это перебор массива данных, и он весь массив данных загоняет в память
чем больше массив, тем дольше
зачем это надо?
с foreach можно сортировать эти данные, для сортировки они все должны быть в памяти.
а вот for (и while/unless) просто перебирают массив
ещё передавать в функцию ссылку на переменную (я не знаю, есть ли ссылки в пхп) быстрее, чем саму переменную
особенно, если переменная окажется невъебенным массивом данных
|
|
|
31.05.2013, 22:27
|
#20
|
Ебланнед
Регистрация: 28.05.2013
Сообщений: 44
Бабло: $70920
|
и кстати, ускорители (те, которые пхп-код сразу в память загоняют вместе с запуском сервера) тут не помогут, если данные динамические
вся надежда на качественный код
|
|
|
01.06.2013, 00:10
|
#21
|
автоматизирую интернеты
Регистрация: 05.07.2009
Адрес: chesser.ru
Сообщений: 3,356
Бабло: $470735
|
Цитата:
Сообщение от llittle indian
foreach это перебор массива данных, и он весь массив данных загоняет в память
чем больше массив, тем дольше
зачем это надо?
|
массив данных уже в памяти как в случае с for, так и с foreach
не понял о чем ты
Цитата:
Сообщение от llittle indian
с foreach можно сортировать эти данные, для сортировки они все должны быть в памяти.
|
как foreach-ем можно сортировать данные?
сортировка организуется либо готовыми array-функциями, либо в 0,01% случаев пишется свой алгоритм, использую базовые примитивные функции
Цитата:
Сообщение от llittle indian
а вот for (и while/unless) просто перебирают массив
|
unless нету в пхп, но смысл понятен. Эти циклы работают также как foreach, отличие в том, что foreach умеет бегать по более сложным структурам (хеш-массивы), хотя ее также можно представить одномерным массивом.
Цитата:
Сообщение от llittle indian
ещё передавать в функцию ссылку на переменную (я не знаю, есть ли ссылки в пхп) быстрее, чем саму переменную
особенно, если переменная окажется невъебенным массивом данных
|
зависит:
1) от версии php
2) от стиля кодинга. Некоторым(мне) нужна изолированность объектов/процессов, качественная инкапсуляцию и соблюдение SOLID. Передача по ссылке усложняет связи, повышает риски ошибиться, и потом такой код приводит к "лапше". В ФП правильно делают
Цитата:
Что касается ошибок программиста, то некоторые неудобные на первый взгляд качества Erlang неожиданным образом защищают систему от вторжений плохого кода. Так, те самые, поначалу столь непривычные, «непеременные переменные» мешают новичку повредить данные, выполнив какие-то неправильные действия в середине кода. И, если, внутри процесса данные защищены иммутабельностью, то межпроцессное взаимодействие даёт дополнительную защиту: при отправке между процессами данные копируются (передаются только по значению, а не по ссылке). Таким образом, данные труднее затереть или повредить; меньше боязни, что новый написанный модуль повлечет за собой проблемы в работе всей системы.
|
http://fprog.ru/2010/issue6/dmitry-d....js-vs-erlang/
3) от конкретной ситуации. здесь по сути надо выбрать какую оптимизацию делаешь: по памяти, или по скорости.
|
|
|
|