Духовность™
Продвинутый новичок
1
тем меньше крови.Автор оригинала: HraKK
Я понял, чем меньше строк тем круче помидоры.
Где ваша реализаци этого паттера, тогда можно и сравнить.Автор оригинала: Nelius
Тесты производительности в студию!)
регулярки быстрые достаночно. кто быстрее ещё надо выяснить. А вот скорость разработки повышается.Автор оригинала: Nelius
если: а) это быстрее
Регулярные выражения стандартизированы(отностильно) и понятны любому кто с ними имел дело в любой среде. А вот вами написанный код этими качествами не обладает.Автор оригинала: Nelius
б) это понятнее и проще для других людей кто будет смотреть мой код
я необходимость уже обосновал.Автор оригинала: Nelius
с) не использовать регулярные выражения там где нет необходимости это делать.
Регулярые выражения очень мощьный инструмент и им желательно владеть.Автор оригинала: HraKK
Меньше крови? Мне проще понять строковое, да и не мне только.
После матчинга этого паттерна, на выходе я получаю именновые праметры(всё делает за меня библиотека рег.выраженирй). Я точно знаю, что они соотвествуют заданному мною формату(это строка, а это число и т.д.). Опять всё сделал за меня парсер. После я этого я передаю эти параметры в обработчик(черный ящик), который "закреплен" за этим паттерном. Он мне и вернет контекст для шаблонизатора. В итоге, весь разбор юрла сделала мне библиотека. А меньшая производительность ещё не доказана. Зато я не тратил время на разработку разбора юрла сам, доверив его проверноой, отлаженной бибилотеке.Автор оригинала: HraKK
а к тому же заметьте что я могу производить какие то фильтры над получаемыми данными сразу а вам придется еще дописывать строки или использовать _callback еще угемороя код во много раз, не говоря уже о производительности.
Про читаемость выражения я уже написал. Кол-во строк меньше. Производительность вы проверяли?Автор оригинала: HraKK
И так количество строк практически тоже, если отойти от абстрактного случая, читаемость ниже, производительность еще ниже.
Я не говорил про формат, я говорил про действия. Но то не важно потому что это все сферические кони в вакуме.мною формату
сейчас проверюПроизводительность вы проверяли?
<?php
$url = '/blog/HraKK-Super-super/archive/1986/12/13/Suxx-itreallycrap/';
$q= microtime(1);
for($i =0;$i<10000;$i++)
{
$string = explode('/', $url);
$username= (STRING)$string[2];
$year= substr((INT)$string[4],0,4);
$mouth= substr((INT)$string[5],0,2);
$day= substr((INT)$string[6],0,2);
$subj = (STRING)$string[7];
}
print microtime(1)-$q.'<BR>';
$q= microtime(1);
for($i =0;$i<10000;$i++)
{
$result = preg_match("~^/blog/(?P<username>[\w-_]+)/archive/(?P<year_id>\d{4})/(?P<month_id>\d{1,2})/(?P<day_id>\d{1,2})/(?P<post_slug>[\w_-]+)/$~", $url, $f);
}
print microtime(1)-$q.'<BR>';
И в правду. Мои результаты вашего кода:Автор оригинала: HraKK
И это при том что в строковых я написал по мудакскому, а можно еще оптимизировать.
> php -f reg.php
0.11503410339355
0.10777282714844
Глупости какие. Ничем не надо жертвовать ради красивых урлов. Надо просто написать хороший и удобный тебе механизм обработки этих урлов. И не спрашивать ни у кого, а читать умные книжки и статьи, интересные треды в форуме "Вопросы по теории программировании" (там очень умные люди пишут, кстати) и формировать свой собственный стиль программирования. Время от времени корректировать его, оптимизировать собственные алгоритмы.Ради красивых урлов приходится чемто жертвовать.
Верно, потому что они заточены под эту логики. НО. Не всегда нужнен этот весь функционал, в 90% не нужен. У меня на работе один писал регулярками только потому что впадло было запоминать весь функционал строковых функцийфункции с такой-же логикой и результатом.