Сведения о вопросе

Kimsanov

05:43, 25th August, 2020

Теги

regex   performance   perl   uri   perl-module    

Каков самый быстрый способ определить полный URL из относительного URL (учитывая базу URL)

Просмотров: 468   Ответов: 5

В настоящее время я использую модуль URI::URL для создания полного URL из относительного URL; однако он работает не так быстро, как хотелось бы. Кто-нибудь знает другой способ сделать это, который может быть быстрее?



  Сведения об ответе

prince

00:11, 18th August, 2020

Просто произошло через эту статью , которая указывает на недостатки в Redhat/Centos/Fedora реализациях Perl, которые глубоко влияют на URI .

Если вы используете один из этих вкусов Linux, вы можете перекомпилировать Perl из исходного источника (не из источника RPM).

Я понял, что любой, кто запускает код perl с интерпретатором распределения perl на Redhat 5.2, Centos 5.2 или Fedora 9, скорее всего, является жертвой. Да, даже если ваш код не использует причудливую идиому bless/overload, многие модули CPAN делают это! Этот поиск google показывает, что 1500 + модулей используют идиому bless/overload, и они включают в себя некоторые действительно популярные, такие как URI, JSON. ... ...

В этот момент я решил перекомпилировать perl из исходного кода. Ошибка пропала. И разница была ужасающей. Все стало серьезно быстро. CPUs охлаждались при нагрузке ниже 0.10, и мы обрабатывали данные в 100 раз до 1000 раз быстрее!


  Сведения об ответе

FAriza

08:25, 5th August, 2020

Следующий код должен работать.

$uri = URI->new_abs( $str, $base_uri )

Вы также должны взглянуть на страницу URI на странице search.cpan.org .


  Сведения об ответе

park

01:42, 19th August, 2020

Брендан, мне следовало уточнить, что я не могу гарантировать, как будет выглядеть относительный путь. Это может быть довольно сложно (например, имеет косую черту спереди, не имеет косой черты, имеет "../", прием).

Питер, это то, что я использую сейчас. Или это быстрее, чем с помощью URI::URL - >new ($path) - >abs?


  Сведения об ответе

padenie

11:58, 14th August, 2020

Может зависеть немного, как вы получите эти 2 строки. Вероятно, безопасный, огнеупорный способ сделать это-это то, что находится в URI::URL или подобных библиотеках, где будут рассмотрены все альтернативы, включая вредоносные. Может быть, медленнее, но в некоторых средах быстрее будет скорость пули, идущей к вашей собственной ноге.

Но если вы ожидаете, что там что-то простое и не хитрое, можно увидеть, начинается ли оно с/, цепочки ../ , или любой другой символ. 1-й поставил бы имя сервера + url, 2-й ЧОП пути от базы uri до получения в одном из других 2 альтернатив, или просто добавить его к базе url.


  Сведения об ответе

DO__IT

02:24, 10th August, 2020

Возможно, я ошибся концом палки, но не стал бы,

$full_url = $base_url . $relative_url

работа? Обработка текста IIRC Perl происходит довольно быстро.

@lennysan Ах, да, конечно. Извините, я не могу помочь, мой Perl довольно ржавый.


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться