Сышышь ты, выходи сюда,
поговорим !

Какой язык шустрее, PHP или Perl?

Опубликовано: 05.09.2018

видео Какой язык шустрее, PHP или Perl?

Лекция 6: CGI и Perl. SSI и Cookies

На данный вопрос однозначный ответ дать нельзя, так как Perl в значительной степени отличается от PHP. Язык Perl - разносторонний и мощный интерпретируемый язык, а PHP создавался в основном для работы в интернете. Отсюда следует, что не стоит сравнивать между собой эти два языка.



Факт, что язык PHP легче. При запуске веб-сервера Apache (демона httpd) сразу же подгружается интерпретатор и при запросах к исполняемым скриптам нет лишних и ресурсозатратных загрузок ЦП. Скрипт сразу же выполняется, поэтому и говорят, что язык PHP очень быстр. Если даже при эксплуатации PHP используется дополнительная память (каждый потомок использует модуль php), при большом кол-ве запросов мы получаем явное преимущество в производительности.


Сотрудники Яндекс рассказывают о Django

Последовательность выполнения скриптов Perl при стандартном подходе выглядит иначе. При запросе такого скрипта, Apache подгружает интерпретатор, а тот выполняет программный код. При этом используется довольно много памяти. Не меньше 2-х мегабайт на каждый отдельный процесс, но обычно 4-6 мегабайт. Отсюда следует, что при каждом обращении к скрипту веб-сервер выполняет загрузку большой программы - интерпретатора. Но это не означает, что скрипты Perl выполняются медленнее. Это говорит о том, что веб-сервер испытывает немалую нагрузку при работе с Perl скриптами.


Forking and threading, multi-threading options in Perl

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

Эту ситуацию можно просто исправить (mod_perl сразу не понравился, потребляет заметно много памяти и о нем я говорить не стану): на веб-сервер с Perl устанавливается отличный модуль - fast_cgi (подробнее см. на http://fastcgi.com). Используя его, можно существенно снизить нагрузку на веб-сервер, так как скрипт после первого запуска не удаляется из памяти, а ожидает следующий запрос. И скрипт выполняться будет столько времени, сколько потребуется, находясь в памяти. Таким образом, лишней нагрузки на ресурсы веб-сервера не происходит. Данная идея лежит также в основе языка PHP.

Обычные CGI-скрипты отличаются от скриптов FastCGI несколькими строками кода и структурой. К примеру, скрипт при первом запуске соединяется с БД MySQL и, затем, постоянно держит это соединение. Для работы скрипта именно под управлением FastCGI, нужно вызвать FCGI библиотеку. Её легко установить под ОС Unix или Linux.

#!/usr/bin/perl use FCGI; my $query = FCGI::Request(); Действия, исполняемые при инициализации скрипта (к примеру, соединение с базой данных) while($query->Accept() >= 0) { Главные действия, которые скрипт должен исполнить } Действия при завершении (требуется редко)

Выполняя запросы, скрипт как бы проходит по циклу: ожидание - исполнение - ожидание - исполнение. Но на самом деле (под Unix или Linux) это дремлющий процесс, который пребывает в Accept режиме.

Если запросов слишком много, то веб-сервер запускает дополнительную копию процесса. На это уходит ещё некоторое количество памяти, но, в общем, повышает скорость веб-сервера и экономит его ресурсы.

Отсюда следует естественный вывод - кто предпочитает язык PHP, пусть использует php скрипты и не обвиняет Perl язык. Связка Perl + FastCGI - отличный ответ на подобные обвинения. На стадии выполнения программного кода в трудных задачах PHP проигрывает Perl, и побеждает лишь на стадии загрузки. Но приминение FastCGI устраняет это преимущество. Поэтому выбор между этими языками полностью зависит от специфичности решаемой задачи и уровня разработчика. Новичкам язык Perl довольно сложен в освоении, но позволяет решать большой спектр задач, помимо веб-ориентированных. Язык PHP прост в изучении и удобен при разработке различных веб-приложений.

На FastCGI лучше перевести часто исполняемые и большие скрипты. Не все провайдеры хостинга предоставляют поддержку этой технологии. Разогнанный Perl позволяет вести крупные интерактивные сайты на обычном виртуальном хостинге и становится больше провайдеров устанавливающих эту полезную софтину.

rss