![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
Leklerk |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 200 Регистрация: 31.7.2009 Где: Санкт-Петербург Репутация: нет Всего: нет |
Допустим нужно заменить в строке символы BBCode b, /b на <b>, </b>. При этом заменяем только пары b, /b, а открывающие без закрывающих и закрывающие без открывающих игнорируем. Сделал так
Однако не слишком ли замедляет скрипт частый вызов unset()? P.S. Там где while, стоят b в скобках, а не ''. Это сообщение отредактировал(а) Leklerk - 8.10.2009, 10:27 |
|||
|
||||
NewDima |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 922 Регистрация: 20.2.2006 Где: <?here?> Репутация: 10 Всего: 12 |
Leklerk, проверь и узнаешь
|
|||
|
||||
Ипатьев |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: 28 Всего: 37 |
вот удивительно
в коде используется десяток функций и алгоритмов. и кавычки, разумеется, присутствуют но выбор пал только на одну из них мне страшно интересно, чем руководствуются горе-оптимизаторы, выбирая объект своей страсти. одному длина имени переменной не угодила. другому - название оператора цикла. третий озаботился ансетом. почему не strpos? почему не foreach? почему не наличие пробелов и пустых строк? загадка. |
|||
|
||||
Leklerk |
|
||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 200 Регистрация: 31.7.2009 Где: Санкт-Петербург Репутация: нет Всего: нет |
NewDima, как-нибудь попробую. Есть просто стандартные грубые ошибки, например, повсеместное использование рег. выражений или
вместо
Я и подумал, может удалением переменных тоже не стоит злоупотреблять... Это сообщение отредактировал(а) Leklerk - 8.10.2009, 11:19 |
||||
|
|||||
NewDima |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 922 Регистрация: 20.2.2006 Где: <?here?> Репутация: 10 Всего: 12 |
Leklerk, не стоит, когда речь идет о небольших объемах обрабатываемых данных.
И постарайся понять, что тебе сказал Ипатьев, он у нас критик. Твой алгоритм нерпоизводителен |
|||
|
||||
Ипатьев |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: 28 Всего: 37 |
ахаха, все-таки не единственная забота об оптимизиции. еще count в цикле
![]() вот удивительно, насколько живучи дремучие заблуждения. "стандартные грубые ошибки". это ж надо. удар по производительности. зависание сервера и финансовый крах - не меньше - ждут проект, если он не исправит эти ошибки. в подавляющем большинстве случаев обе "стандартные грубые ошибки" (не, ну надо ж так назвать-то!) никакого влияния на производительность системы не оказывают. а в некоторых случаях приводят к противоположному результату, который мы видим здесь во всей красе: из за боязни регулярных выражений пишется два цикла... дублирующих друг друга ![]() я не знаю, нужны какие-то жесткие правила. это же один из самых распространенных вопросов на форуме. я тут сравнительно недавно, но буквально каждые два дня появляются вопросы по такой вот "оптимизации". |
|||
|
||||
Ипатьев |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: 28 Всего: 37 |
а ведь для 5 тегов текст будет перебираться по одной букве 10 раз.
это уже не смешно уж хотя бы за один проход можно было найти все теги вместе, и открывающие и закрывающие? и ведь не возникает у них в голове вопрос "оптимален ли алгоритм". вообще не возникает, никогда. ни одного вопроса по поводу оптимальности алгоритма я здесь не видел к вопросу об алгоритмах и их нужности среднему пхп-пользователю. |
|||
|
||||
lelik133 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 517 Регистрация: 5.2.2003 Где: Москва Репутация: 5 Всего: 14 |
//оффтоп да не умеет средний пхп-пользователь придумывать алгоритмы, а умеет только кодить, часто методом copy-paste. поэтому такие и вопросы...
|
|||
|
||||
youri |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 17.4.2004 Репутация: 6 Всего: 16 |
ну они просто где-то написаны, например, в правилах хорошего кода lol. Причем по теме важно было только одну вещь сказать (ну, как максимум, оттуда можно себе coding style придумать, выборочно). Но, например, после моей характеристики темы (хотя не совсем моей) пришли люди каждый со своим coding style и начали доказывать, какие кавычки круче а вообще, видимо этот код просто негде протестировать в реальных условиях. Поэтому по-хорошему надо сэмулировать реальные условия, чтобы найти узкое место. А это сложнее, чем вынести какой-нибудь count за цикл или прочитать статью типа этой. Почему выбор пал на unset - это для меня загадка, интересно было бы услышать объяснение |
|||
|
||||
nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: 12 Всего: 43 |
|
|||
|
||||
Leklerk |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 200 Регистрация: 31.7.2009 Где: Санкт-Петербург Репутация: нет Всего: нет |
Да он в общем и не пал... Были сомнения по поводу того, насколько оправданно удалять переменные в большом количестве - если их, скажем, будет несколько тысяч. |
|||
|
||||
Ипатьев |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: 28 Всего: 37 |
их не будет несколько тысяч
переменная $val - одна. Добавлено через 14 минут и 36 секунд Откуда в тексте возьмется несколько тысяч бб-кодов - вопрос задавать, как я понимаю, бессмысленно. youri, мда, загрузили вы меня этими ссылками. Сказать по правде, не всё я осилил. Но, насколько я понял, в части тем речь идет о coding standards, а это совсем другое. Самое ужасное - по последней ссылке. Я эту статью, кстати, кажется где-то уже видел. Типичные рассуждения начинающего программиста, не имеющего представления о реальных причинах снижения производительности и о путях ее повышения. |
|||
|
||||
Leklerk |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 200 Регистрация: 31.7.2009 Где: Санкт-Петербург Репутация: нет Всего: нет |
Количество инициализаций и удалений $val зависит от размеров $tags_closed, $tags_opened. Когда я писал о тысячах, имел в виду понятно не этот код.
Это сообщение отредактировал(а) Leklerk - 9.10.2009, 11:08 |
|||
|
||||
Ипатьев |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: 28 Всего: 37 |
Правильно.
но выше-то вы писали, что переменных много:
любой человек, который прочтет это предложение, поймет его так, что переменных несколько тысяч. но отнесем это на счет того, что вы просто запутались. unset вам нужен для логики кода. лично я бы делал просто переменную флаг но и с unset вряд ли будут какие-то проблемы вопрос о тысячах итераций остается открытым Добавлено @ 11:27 что-то я вообще ту логику не понял. что там делает этот foreach? который задает $val мы каждый раз перебираем массив $closed_tags по алгоритму Шлёмы-рисовальщика? Это сообщение отредактировал(а) Ипатьев - 9.10.2009, 11:27 |
|||
|
||||
Leklerk |
|
||||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 200 Регистрация: 31.7.2009 Где: Санкт-Петербург Репутация: нет Всего: нет |
Совершенно верно.
Делает он вот что. Для каждого откр. тега $opened_tags[$i] ищет ближайший закр. тег.
Я всё сказал. Это сообщение отредактировал(а) Leklerk - 9.10.2009, 11:40 |
||||||
|
|||||||
![]() ![]() ![]() |
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |