Короткий скрипт, длинный модуль или длинный скрипт, короткий модуль? - PullRequest
1 голос
/ 07 августа 2009

Мне было просто интересно, что лучше для производительности при создании веб-сервиса на Perl.

Лучше ли иметь как можно более короткий скрипт .pl и поместить как можно больше кода в модуль, который используется скриптом .pl, или это не повлияет на производительность, если я не использую модуль в все

Я использую mod_perl на системе CentOS Linux с Perl 5.8.8.

Ответы [ 4 ]

4 голосов
/ 07 августа 2009

Поскольку вы используете mod_perl, нет заметного снижения производительности при распределении кода по числу файлов. Использование модулей, небольших тестируемых функций и объектно-ориентированной структуры для вашего кода сделает его более понятным, многократно используемым и расширяемым. И вам вообще не нужен скрипт .pl, так как вы используете mod_perl. Просто сделайте что-то вроде:

httpd.conf

PerlModule My::WebApp
<Location /app>
    SetHandler perl-script
    PerlHandler My::WebApp
</Location>

My/WebApp.pm

package My::WebApp;

use strict;
use warnings;

use Apache2::Const -compile => qw(OK);

sub handler { 
    my $r = shift;    # apache request object

    # do stuff

    return Apache2::Const::OK;
}

Использование инфраструктуры веб-приложений делает это еще проще. CGI :: Application имеет отличную встроенную поддержку mod_perl.

4 голосов
/ 08 августа 2009

При написании модулей с mod_perl есть преимущество в производительности. Вы можете иметь загрузочные модули Apache при запуске. Таким образом, они скомпилированы и готовы к работе, когда это разлучает нового ребенка. Они также могут выполнять работу при запуске и делиться этой работой, а не каждый ребенок должен делать это снова. Кроме того, скомпилированный код может находиться в общей памяти, что сокращает объем используемой памяти.

Вот некоторая информация об Apache 2.x и Apache 1.x . В Apache 2 ваша стратегия несколько отличается в зависимости от используемой рабочей модели.

Но важнее то, что модули легче тестировать, документировать и использовать повторно.

Предупреждение: прошло много времени с тех пор, как я провел оптимизацию производительности mod_perl.

3 голосов
/ 08 августа 2009

Независимо от того, что вы делаете, вы должны отделить то, как люди запускают вашу программу от всей ее функциональности. Разделите ваш код на модули, где они не связаны с чем-то еще, что вы делаете. Специфичные для Apache части вашего приложения должны быть только тонким слоем, который обрабатывает соединение между запросом и остальной частью вашего кода.

2 голосов
/ 07 августа 2009

Вы лучше подумайте с точки зрения ремонтопригодности. Перейти на модули. Когда вы используете mod-perl, вам не нужно беспокоиться о проблемах производительности, которые могут возникнуть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...