Просмотр полной версии : Oптимизaция cкpиптoв [пapa вoпpocoв]
Chat.nm.ru
18.11.2005, 01:18
Haчинaю изyчaть PHP и xoтeлocь бы yзнaть, кaк cильнo нa пpoизвoдитeльнocть (в чacтнocти нa cкopocть paбoты cкpиптa) влияют yдaлeниe кoммeнтapиeв, лишниx пpoбeлoв и пepeвoдoв cтpoк, нeнyжныx cимвoлoв, иx зaмeнa (нaпp., <?php нa <?) и т.п.?
2) Для paбoты oднoй oпции в cкpиптe иcпoльзyeтcя пpoвepкa нa нaличиe фaйлa, тaк вoт, кaк лyчшe (кoppeктнee) этo peaлeзoвaть, чтoбы пpoвepялocь нa нaличиe фaйлa file_exists или нa eгo oтcyтcтвиe !file_exists? Или этo aбcoлютнo нe имeeт никaкoгo знaчeния?
действие выполняется одно file_exists
какая разница...
А зачем пробелы удалять в пхп ? Пробелы в хтмл надо убивать, чтоб быстрее страница грузилась, правда это ужасно...
Зато поисковики любят без лишних пробелов -)
Тебя такие странные вопросы интересуют... Надеешься сервак сильно загрузить поситителями?
Все это абсолютно не влияет на скорость работы...
Не парся над такой мелочью....
Вот если у тебя запрос к базе на 30 строк, то это может повлиять на быстродействие...
fucker"ok
18.11.2005, 14:02
Если важна скорость, тогда лучше писать на асемблере :d
Это экономия на туалетной бумаге.
нее коменты конечно не влияют, но для некоторых функций можно сделать оптимизацию - в хелпе по пхп это сразу написано. качай с офф сайта.
нее коменты конечно не влияют влияют.
Чем их меньше - тем хуже. При изменении кода.
fucker"ok
18.11.2005, 20:31
2 Zaco:
Надо разделять понятия: оптимизация алгоритма и удаление лишних пробелов :-)
2nerezus может я конечно заблуждаюсь.. меньше - хеже это в смысле читабельности кода, но разьве каменты влияют сильно на скорость?
2fucker"ok я сказал про лишнее пробелы и каменты - никак это не влияет (сильно не влияет!)
но разьве каменты влияют сильно на скорость? да, на скорость программиста =)
http://tony2001.phpclub.net/doc/standard/
NaX[no]rT
19.11.2005, 01:28
Это экономия на туалетной бумаге.
5 балов =))
На нескольких десятитысячных секунды не сэкономишь.
<?php лучше использовать, так как бывают серверы где апач не считает короткую запись (<?)за пхп...
yдaлeниe кoммeнтapиeв, лишниx пpoбeлoв и пepeвoдoв cтpoк, нeнyжныx cимвoлoв, иx зaмeнaВсе это НЕсильно влияют на работу скрипта,но если рассудить логически, что нужно сделать интерпритатору:
1)Взять строку.
2)Анализировать строку
Если из пунтка два можно получить комманды то:
3)Интерпритировать код
4)Выполнить комманды , которые получились из пункта три.
Так вот это конечно все только приблизительно,но все же,помыслим:
Интересное начинается во 2 пункте...
Интрерпритатору нужно просмотреть взятую строку,если это не коментарий,то анализировать синтаксис.Значит интерпритатору нужно еще определять коментарий ли это,если например в предыдущей части взятого кода встречается "/*" то интерпритатору нужно найти символ закрывающий коментарий "*/", а это занимает процессорное время и память(нужно ведь запомнить откуда начинается коментарий).
То есть теоритически,коментарии замедляют выполнение скрипта,но естественно это замедление незначительное.Но это только мое мнение,возможно ошибочное, т.к. нужно знать алгоритм работы компилятора,мы же можем только предпологать.
Вопще оптимизация скриптов дело тонкое,мало что зависит от коментариев,пробелов и т.п намного больше оптимизация зависит от используемых функций
зы Все выше-перечисленное ИМХО
все перечисленное выше - ничто по сравнению с оптимизацией алгоритма ;)
Все, говорящие, про экономию на туалетной бумаге - идут лесом и стоят раком =) Без обид, просто есть несколько НО.
1) Оптимизация алгоритма и убирание лишних пробелов - почти одинаковое понятие, линия не четкая и не ровная между ними. Инь-Янь епть.
2) Практически у каждой функции есть ее альтернатива. Нарпимер содержание текстового файла в браузер можно вывести практически 10-ю способами. И практически никто не знает что статику намного эффективнее юзать file_get_contents() если файловая система поддерживает контенты и memory mapping или же readfile, которая не получает содержание файла, а сразу кладет его в буфер, т.е. отдает в браузер. Все же юзают include. На 1000 инклудов файла в 2 кила file_get_contents() экономит 3 секунды серверного времени. А это писек как не мало.
Вот и попробуйте проверсить тут границу между оптимизацией кода и алгоритма. Использование оптимальных функций впринципе это издержки кода, но точно так же могут быть оговорены и в алгоритме. Поэтому про туалетную бумагу тут очень загнуто.
Не надо путать Программирование с Web-программированием! Это 2 разные вещи! В обычном программировании вы не задумываетесь о меловчах, но в вебе вашим софтом НА ОДНОЙ ТАЧКЕ будут пользоваться миллионы пользователей. Если вы купите туалетную бумагу для себя на 10 рублей ороже чем обычно - разницы не почуете. Если же вам нужно купить туалетной бумаги на всю российскую армию, тот разница 10 рублей в цене бумаги будет очень существенной, она будет огромной!!!
3) Попробуйте в конце скрипта поставить 10 000 переносов строк. Даже самый простой скрипт будет выполняться секунд 5. Если убрать все комментарии, все лишние переносы и проьелы экономия будет, поверьте. Да и потом это просто хороший тон. Комментировать нужно не код, а алгоритм, который до этого пишется в тетради. Все равно что на машину писать аэогрофом ее характеристики. Макс скорость и прочее. Зачем? Они один раз указаны в ее документах и более не понребуются.
Впринципе я могу писать еще долго, но смысла не вижу. Просто отвечу на вопрос. Если речь идет о web-программировании, то да. Даже совершенно мелкая оптимизация кода играет очень большую роль. Не стоит о этом забывать. Приведу очень простой пример. Система статистики сайтов. mail.ru, у них поряка 20 серваков все это считают и отображают. клиентов мало. Rax.ru, 1 800 000 клиентов, немеренно количество просмотров ежедневно. 1 слабенький сервак с 800 Mhz процом на борту ее обеспечивает.
Поймите, я не хочу никого обидеть, не хочу ни с кем спорить. Просто если бы речь шла о правильной реализации XSS - и бы и пчку бы свою не открывал. А когда тут вот так бессмысленно и необосновано пишут про туалетную бумагу - это бред.
Еще посчет file_exists(). Я тараюсь это не юзать, я делаю примерно так.
if(@readfile('cash/123.html')){
echo 'Фал загружен';
}else{
echo 'Файл отсутствует на серваке.';
}
Таким образом я и проверяю наличие файла и сразу елаю действие над ним. вот что это в данном случае? Оптимизация алгоритма или кода? Это моифицирование алгоритма для оптимизации кода полчается. Вообще все вопросы оптимизации - очень тонкие и нуждаются в тестировпнии. Даже я могу быть в чем то не прав, но твержо утверждать что экономить на туалетной бумаге глуппо в web масштабах - точно так же глупо =) Надеюсь, меня правильно поймут.
А вообще задавайте вопросы и даже просто обсуждениям я любым буду рад. Сам я не бог и далеко не все знаю, а общее обсуждение одного вопроса, даже оптимизаци, разные мнения и споры - это всегда полезно! Бывает мне отец, который вообще гениколог и не имеет отношения к компам никакого, а подстказывает элементарные вещи по оптимизации или по юзабилити проекта. Просто элементарные вещи, на которые я не обраащл внимания.
Все, говорящие, про экономию на туалетной бумаге - идут лесом и стоят раком =)
но твержо утверждать что экономить на туалетной бумаге глуппо в web масштабах - точно так же глупо =)
и убирание лишних пробелов лишних пробелов не бывает... ведь есть Zend Optimizer и аналоги ;)
почему про него не сказано? =)
ведь человек экономит на том, чего кже нету, а следовательно на этом съэкономить нельзя(т.к. нету)!
нет такого слова "нету". Это, во-первых. Во-вторых, мы говорим о web-программировании. Если на одном хостинге есть Zend optimizer а на другом нет? Да и наличие пистолета не дает тебе права полить по всем почем зря. Ты уж извени, но если у хостера есть Zend Optimizer, это еще не пово "пачкать" код лишними пробелами и переносами. Работа Zend Optimizer`а это тоже рабочее время сервера, он убирает эти пробелы, но он тоже тратит на это ресурсы сервера.
а на другом нет?а зачем такой хостинг брать? причем VDS сейчас дешево стоят.
еще не пово "пачкать" код лишними пробелами и переносами
я не знал, что оформлять код в соответствии с правилами PEAR - это значит "пачкать его".
Работа Zend Optimizer`а это тоже рабочее время сервера, он убирает эти пробелы, но он тоже тратит на это ресурсы сервера. пробелов лишних нету - они убираются еще ZDE.
Погоди, погоди. nerezus. Ты не прав. Ты сейчас ведешь себя как тупой php программист, который всю жизнь работает только на Zend`овых проуктах, прочитавший какие-то книги про PEAR и прочее. Забудь ты о Zend, не существует их, она как компанияю появилась 10 лет назад от силы, что, до них не существовало программирования и web-программирования в частности? А ты видел сколько стоят их продукты? про PEAR забудь, он писал для того, чтобы ламерообразные программеры писали более-менее понятный для вопсприятия код. Другими словами чтобы в нем было легче копаться. Я не хочу тобы в моем коде кто-то копался, пишу я только для себя и знаю все свои скрипты, весь свой софт практически наизусть. мне не нужны комментарии. Если я что-то забываю и не помню зачем ставил тут проверку - открываю тетрадь и ищу запись о этом, засорять код программы местными комментами глупо. Все равно что записывать телефоны друзей на своей рубашке, так как она ближе. Есть для этого специальное место - записнуха. И вообще глупо отталкиваться от того что Zend за тебя все сделает. Автоматизация - он очень важна, сомнений ноль, но не до той степени, когда она делает людей тупыми. Я не в коем случае не говорю о тебе. Я говорю вообще. Коворю о том, что америкосы считают что картошка изначально имеет форму вытнутого прямоугольгника, что Суши растут на деревьях в японии и что великую отечественную войну побеили именно американцы и именно они взяли Берлин и лично застрелили Гитлера.
А насчет хостинга, зачем покуать русскую 9-ку, если можно купить Bmw последней моификации?
что, до них не существовало программирования и web-программирования в частности? почти. А до этого был cgi, в котором на прбелы положить(в компилируемых случаях)
А ты видел сколько стоят их продукты? мы русские люди или нет? ;)
ну оптимайзер халявный, например.
про PEAR забудь, он писал для того, чтобы ламерообразные программеры писали более-менее понятный для вопсприятия код. понятный код - это плохо?
Я не хочу тобы в моем коде кто-то копался, пишу я только для себя и знаю все свои скрипты, весь свой софт практически наизусть. я же хочу работать в комманде.
А насчет хостинга, зачем покуать русскую 9-ку, если можно купить Bmw последней моификации? бумер дорогой, а VDS дешевый.
cgi так же не компилился. Да и потом продукаты зендовые последние свет увидели не так давно. Не забывай. Люди ты мы, конечно, русские и Zend Optimizer, конечно, бесплатный, но вот Encoder стоит 2500 бачей. PEAR позволяет любому программеру читать твой код. Я не работаю в комманде, но планирую работать, так как сам не железный, только мне не нужны комменты той или иной строки, я и так вижу что она делает и ачем нужна. А если не понимаю - спрошу у программера. Спички давно уже изобрели, и ICQ тоже. Хватит уже из камней добывать огонь.
а и потом вообще я не понимаю причину спора? Не существует Zend`а, не существует сторонних разработок, классов, шабланизаторов. Этого всего нет. Есть только ты и полет твоей мысли, которую ты реализуешь на том или другом языке программирования. Учитывая оссобенности того или иного языка программировани/платформы разработки. В данном случае речь идет о web программировании на php, не идет речи о программировании на php под Zend платформы. Я обсалютно точно могу сказать что даже лишние пробелы влияют на скорость оброботки кода. Попробуй это мне возврази, только что-нибудь по убедительнее, чем примера с туалетной бумагой.
cgi так же не компилился. с++ не компилится? правда? не знал, не знал... :)
Не существует Zend`а, не существует сторонних разработок, классов, шабланизаторов. а я видел. В Интернете. Хватит уже из камней добывать огонь.
что даже лишние пробелы влияют на скорость оброботки кода. Попробуй это мне возврази Zend. От авторов пхп, под который пишем. Причем Zend Optimizer, конечно, бесплатный.
Рад что хоть кто-то еще пишет сам а не юзает чужое. Это ты мне сказал, когда я начинал. Вспомнилось...
Далее:
О блин... фига наваратил то... тоже твои слова. Это насчет писали более-менее понятный для вопсприятия код
Блин нерезус, поверь, я люблю спорить, но тут спор скушный. Ты упертся в Zend. Пойми, они не боги, они точно такие же люди, у них 2 ноги и 2 руки и разрабатывают они точно такой же софт, что ты я и Вася с третьей полки. Просто на них лейбл "Zend" и ты бросаешься на колени и тупо поклоняешься им. Бред. Я не говорю что они уроды - отличные ребята, спасибо им за их деятельность. Только вот Zend и php делают разные люди. Говоря о cgi я не имел введу именно c++ или ты хочешь сказать что c++ == cgi?? Бред. Скажи, а если закачик попросит тебя на asp написать сайт, что ты ответишь? Попросишь установить Zend optimizer??? Тебе не кажется что это бред? То, о чем ты говоришь (Оптимизеры, другие зендовые проги, классы сторонних производителей и пр.) актуально только для программеров на php. ТОЛЬКО! А то что я тебе говорю, та оптимизация, о которой я рассказываю - будет актуально для любого web языка программирования. В том числе и php. И то что на php ты можешь халатно расставлять пробелы и переносы коретки, зная что за тебя их уберет бот, это еще не значит так надо. Это значит что ты разбалован системой, которая когда-нить умрет. как и все живое. Если она умрет до тебя, то и ты умрешь, так как ты к ней привязан. Не в прямом смысле умрешь, а как программер.
Это ты мне сказал, когда я начинал. Вспомнилось...
Далее:
тоже твои слова. Это насчет писали более-менее понятный для вопсприятия код
Вот именно таким я тебя и помню =) а в этом топике не узнаю =) какой-то ярый фанат использования чужих разработак и наработак в деле, которое ты любил делать сам. Или я что-то не догнал?
и разрабатывают они точно такой же софт, что ты я и Вася с третьей полки ни ты, ни я, ни Вася не написали пхп ;)
а если закачик попросит тебя на asp написать сайт, что ты ответишь? ASP.NET - компилируемая технология. Так что все оптимизируется при компиляции.
будет актуально для любого web языка программирования так как ты к ней привязан
Я использую только пхп, и,
в крайнем случай, буду юзать питон или ASP.NET, а они компилируемые.
можешь халатно расставлять пробелы красивый код и правила оформления - халтатность?
какой-то ярый фанат использования чужих разработак и наработак в деле это делает код и работу быстрее.
это делает код и работу быстрее.
Вот собственно то, что я и хотел услышать.
Есть 2 марки автомобилей. BMW и РолсРойс. И та и другая - дорогие, красивые автомобили. Только первая - это серийное производство, доступность и всеобщее распространение. А вторая - это ручная работа, собирается руками, есть далеко не у каждого и считается элитой.
Понимаешь, для меня дело даже не в элите. Мне не хочется делать быстро. Мне хочется делать самому и качественно. Пусть это будет дольше, но я буду знать что я сделал это сам. Уж лучше я постаринке со своей женой сделаю ребенка одной темной ночью. Пусть он не бует отличаться золотыми волосами или неземной красотой, что уже могут делать ученые в биологически лабороториях, но это будет мой ребенок.
Я не хочу выкидывать на рынок ПО выкидыши, которых миллионы, я хочу делать уникальные проекты, неповторимые.
Кстати, именно поэтому, nerezus, я живу в Москве, могу позволить снимать себе двушку , кушать копченую колбаску итп. Именно поэтому у меня есть работа и заказчики стоят в очереди. Именно поэтому меня и ценят, не потому что я использую чижие наработки чтобы делать быстрее, а потому что я делаю качественно и могу ответить и поручится за свой скрипт. Ты можешь полностью поручиться за свой сойт, который построен на шаблонизаторе SMARTY, к которому прикручен поискови mnogoSearch и прочее. Ты можешь с уверенностью сказать что все будет работать при любых условиях? Я не уверен. А я могу, так как я знаю кажый сивол своего кода, я знаю при каких нагруках софт будет работать, при каких нет. А так же я с уверенностью могу сказать что даже лементарная оптимизция кода существенно может снять нагрузку с сервера.
Trinux Для меня же - это хобби.
Но насчет пробелов - их же нет ;)
А вот и я включаюсь в спор =)
if(@readfile('cash/123.html')){
echo 'Фал загружен';
}else{
echo 'Файл отсутствует на серваке.';
}Не в обиду конечно но это вери вери тупо :) во первых ты подавляешь ошибки,это я всегда считал отстойным стилем,да и вопще ХОРОШИЙ веб-программист может сделать скрипт без ошибок,варнингов и нотисов,поэтому никакое подавление ошибок ему не понадобится как таковое...Смотрим дольше почему я бы не использовал твой метод: код сильно захламляется,всмысле он становится непонятным,неправильным,не логичным.Насколько я понимаю в веб-программировании, да и вопще в программировании лучше не захломлять свой код,тем более если не пишешь коментариев к коду(как я например =)…) Смотри предположим следущие:
if(@readfile('cash/123.html')){
echo 'Фал загружен';
#Тут еще 1000 строк кода
}#а тут если мы не используем всякие коментарии\пробелы получается что мы забываем
#к чему ставил else и вопще,структура скрипта получается очень херовая...
else{
die('Файл отсутствует на серваке.');
}
А терь посмотрим что можно было предпринять для улучшения работаспособности и понимания кода:
if(!file_exists("data.txt")){die("can't find file");}
#А тут уже читаем файл и так далее на 1000 строк кода :)
Разве код не стал читабильнее и лучше???????
Говоря о cgi я не имел введу именно c++ или ты хочешь сказать что c++ == cgi?? c++==cgi а вот наоборот нельзя(cgi!==c++) =)
Настчет зенда енкодера - зенд не на всех хостингах установлен.
То что нерезус говорит что vds дешевый это все относительно,например я не могу себе из-за моей хаупаги покупать vds да и зачем,всего лишь из-за зенда??? Я конечно получу некоторые преймушества в скорости,но потеряю в мобильности кода,то есть на другом сервере без зенда я уже свой сайт не смогу заставить работать. Тут уже все зависит от вкуса(ТЗ) твоего\заказчика.
Для меня же - это хобби.Ну тогда о каком зенде может идти речь??????
Ну вроде и все что я хотел сказать,за этим прошу откланится от тупых споров =)
Настчет зенда енкодера - зенд не на всех хостингах установлен. на которых не установлен- мы их принимать в рассчет не будем. Мне пары лишних рублей не жалко на норм. хостинг было бы.
Ну тогда о каком зенде может идти речь?????? т.е. если что-то для меня хобби, то я не имею право это делать с удобствами, а должен мучаться?
Насчет @ - то их не рекоммендуют ставить новичкам. Неновички же сами разберутся.
Насчет плохого кода - пытался я переделать minibb - так вот там плохой код =)) никаких отступов и т.д.
Так, qBiN, ты конечно, молодец что подключешься, но дай уже отцам разобраться, а? =)))
А насчет твоего
Не в обиду конечно но это вери вери тупо во первых ты подавляешь ошибки,это я всегда считал отстойным стилем,да и вопще ХОРОШИЙ веб-программист может сделать скрипт без ошибок,варнингов и нотисов,поэтому никакое подавление ошибок ему не понадобится как таковое...
Читай ман =))) в мане написано, что при readfile() несуществующего объекта возарщается ошибка, а при @readfile() возвращается FALSE. Так что это лишь трюк, а не хреновый стиль программинга. Разные вещи. Да и потом, иклудить файл, а при его отсутсвии генерить его проще, чем проверить его существование и при его существовании инклудить а при ошибки генерить - глупо.
2 nerezus
У меня тоже былло хобби, потом оказалось что это сейчас в цене и хобби плано переросло в работу. Тогда да - притензий нет. А начет пробелов - поставть 10 000 пробелов и запусти скрипт без всяких энкодеров - вот и проверишь, есть они или нет =))
поставть 10 000 пробелов боюсь, что не получится - редактор обрежет =) ZDE5
Zend и в редакторы влез =)
Читай ман =))) в мане написано, что при readfile() несуществующего объекта возарщается ошибка, а при @readfile() возвращается FALSE. Так что это лишь трюк, а не хреновый стиль программинга. Разные вещи. .почитаю на досуге :) Но то что хреновый стиль ты меня не разубедил...код становится запутанее...В этом я точна прав :)
Да и потом, иклудить файл, а при его отсутсвии генерить его проще, чем проверить его существование и при его существовании инклудить а при ошибки генерить - глупоВот это нихера не понял :)Так, qBiN, ты конечно, молодец что подключешься, но дай уже отцам разобраться, а? =)))йоу, а я мешаю?)))
зы а где вступать в "отцы"??? а то бабушкой не хота быть...
Для того чтобы вступить в отцы - ман прочти для начала =))) Насчет грамотности кода... Использовать ручной тормоз в автомобиле для осуществления трюков - тоже трюки, а не безграмотное управление автомобилем. Считай что использование трюков - это высший пилотаж. Хотя да, ты прав =) Многие обычные автомобилисты считают что это все гавно и безграмотное вождение =)
Насчет грамотности кода... Использовать ручной тормоз в автомобиле для осуществления трюков - тоже трюки, а не безграмотное управление автомобилем. Считай что использование трюков - это высший пилотаж. Хотя да, ты прав =) Многие обычные автомобилисты считают что это все гавно и безграмотное вождение =)
Ты приводишь как мне кажится примеры впринципи не плохие,но они не дописаны: все зависит от цели: если я уде например на работу мне не нужны никакие трюки,ручной тормоз и тд->трюки ненужны. А если у меня цель быть каскаждером то да,трюки оправданы.
Но ты не ответил на главный вопрос: разве с таким "трюком" код не становится "запутанее"?
разве с таким "трюком" код не становится "запутанее"? Что запутаннее: куча рутины или короткий трюк?
Трюки не придумываются просто так. Просто катаясь на работу, ты никогда не научишься делать резкий разворот ручником - оно действительно тебе не надо. Но когда нужно экстримальное вождение (например погоня или какие соревнования) - то чем больше трюков ты знаешь - тем выше твои шансы. В данном примере я избавляюсь от проверки наличия файла на диске file_exists(). Представь что у тебя лимон хитов на такую страницу ежедневно, данный трюк поможет тебе не слабо сохранить ресурсы тачки
данный трюк поможет тебе не слабо сохранить ресурсы тачкиВ полезности этого "трюка" я что-то сомневаюсь
=))))))))))
Не, объяснять я тебе полезность точно не буду =) Но кто ты, чтобы сомневаться моих трюках? Когда я стал юзать данный бесполезный трюк, я полностью отказался от file_exists(). Доказывать тебе что даже малейшая оптимизация при большой посещаемости дает огромный прирост произвоительности я не буду, это ежам понятно. Ты писал хоть один динамический проект, который обладает на данный момент посещаемостью более 10 000 хостов? Хотя это личное дело каждого.
Но как бы ты этого не хотел - это действительно трюк и о этом написано в мане, цитирую:
"Reads a file and writes it to the output buffer.
Returns the number of bytes read from the file. If an error occurs, FALSE is returned and unless the function was called as @readfile(), an error message is printed. "
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot