Что быстрее: PHP или PERL? Ответить на этот вопрос однозначно нельзя. Дело в
том, что Perl существенно отличается от PHP. Первый - довольно
продвинутый и мощный интерпретируемый язык, а второй создавался
исключительно для работы в вебе. Поэтому, когда кто-то Вам скажет, что
PHP круче Перла, не верьте. Эти языки сравнивают в неравных условиях.
PHP легче - это факт. При запуске демона httpd (веб-сервер Апаче) он сразу
же подгружает интерпретатор. Поэтому при запросах к скриптам нет
бессмысленных и ресурсоемких загрузок процессора. Скрипт сразу же идет
на выполнение, поэтому и говорят, что PHP очень шустрый. И хотя при
использовании PHP тратится дополнительная память (каждый потомок хватает модуль php), при большом количестве обращений мы получаем выигрыш в
производительности.
Процесс выполнения Perl-скриптов в
стандартном виде несколько иной. При обращении к такому скрипту, Апаче
загружает интерпретатор, а тот выполняет код. При этом тратится довольно много памяти. Не менее 2 мегабайт на каждый процесс. Обычно от 4 до 6
мегабайт. Выходит, что каждый раз при обращении к скрипту сервер
производит загрузку тяжелой программы - интерпретатора. Но это не
значит, что Перл-скрипты выполняются медленнее. Это значит, что при
работе с Perl сервер испытывает большую нагрузку.
При больших
нагрузках получаем следующее: сервер, использующий PHP легче справляется с запросами и может обработать больше клиентов. В то время сервер с
сайтами на Perl будет подтормаживать.
Ситуация легко
разруливается следующим образом (mod_perl - убогий, я о нем говорить не
буду): на сервер с Perl ставится прекрасный модуль fast_cgi
(http://fastcgi.com). Он позволяет существенно снять нагрузку с сервера
за счет того, что после первого запуска скрипт не выгружается из памяти, а ждет следующий запрос. При этом скрипт будет работать столько,
сколько нужно, оставаясь в памяти. Никакой лишней нагрузки на ресурсы
сервера. Та же идея, что лежит в основе PHP.
Простые CGI-скрипты отличаются от FastCGI-скриптов всего несколькими строчками да и
структурой. Например, скрипт может при первом запуске соединиться с
MySQL и постоянно держать это соединение. Для того, чтобы скрипт работал именно под управлением FastCGI вызывается библиотека FCGI. Она легко
ставится под Linux или Unix.
#!/usr/bin/perl use FCGI; my $request = FCGI::Request(); … Действия, выполняемые при инициализации скрипта (например, коннект к БД) … while($request->Accept() >= 0) { … Основные действия, которые должен выполнять скрипт … } … Действия при завершении (редко нужно) …
При выполнении запросов скрипт как бы гоняется по циклу: ожидание -
обработка - ожидание - обработка. В реале (под Linux или Unix) это
спящий процесс, который находится в режиме Accept.
Если запросов очень много, то сервер может запустить еще копию процесса. Это жрет
некоторое количество памяти, но в целом увеличивает производительность
сервера и ведет к экономии ресурсов.
Вывод напрашивается сам
собой. Кому нравится Php, пусть использует его и не обвиняют Perl.
Связка Perl и FastCGI - лучший ответ на такие обвинения. При сложных
задачах PHP уступает Perl на стадии выполнения кода, он выигрывает лишь в стадии загрузки. Но использование FastCGI сводит на нет это
преимущество. Так что выбор между языками зависит от специфики задачи и
уровня разработчика. Perl сложен для новичков, но позволяет решать
огромный пласт задач помимо веб-направленных (например, работа в фоновом режиме и обеспечение работы сайта). PHP легок в освоении и удобен при
создании разного рода веб-приложений.
Например, РМП ProtoPlex
построен на Perl-скриптах. Некоторые из них работают как Fast-CGI,
некоторые работают в обычном режиме. Крупные и часто используемые
скрипты лучше перевести на FastCGI. Не каждый хостинг-провайдер
поддерживает эту технологию. Мне известны только ValueHost и Ди-Нет. На
Валуе я хостился раньше, на Ди-Нет - сейчас. Ускоренный Perl дает
возможность держать крупные интерактивные сайты на виртуальном хостинге, поэтому все больше провайдеров ставят себе этот полезный софт.
Источник: gsub.com.ua
|