Я не хочу вдаваться в обсуждение интерпретации (для большинства сценариев реального мира эти накладные расходы никак не влияют) - но вот мои тесты:
1. Plack Plack
zby@zby:~/progs/bench$ cat app.psgi
sub {
my ( $env ) = @_;
return [
200,
[ 'Content-Type' => 'text/text' ],
[ 'Hello World' ]
];
}
zby@zby:~/progs/bench$ plackup
HTTP::Server::PSGI: Accepting connections at http://0:5000/
С простым ab -n 10000
Я получаю
запросов в секунду: 2168,05 [# / сек] (среднее значение)
2. Танцор
zby@zby:~/progs/bench$ cat dancer.pl
#!/usr/bin/perl
use Dancer;
get '/' => sub {
return "Why, hello there";
};
dance;
zby@zby:~/progs/bench$ perl dancer.pl
>> Dancer server 1950 listening on http://0.0.0.0:3000
== Entering the development dance floor ...
С аналогичным тестом AB я получаю
Requests per second: 1570.49 [#/sec] (mean)
3. Mojolicious :: Lite
zby@zby:~/progs/bench$ cat mojo.pl
# Using Mojolicious::Lite will enable "strict" and "warnings"
use Mojolicious::Lite;
# Route with placeholder
get '/' => sub {
my $self = shift;
$self->render(text => "Hello!");
};
# Start the Mojolicious command system
app->start;
zby@zby:~/progs/bench$ perl mojo.pl daemon
Sat Jan 22 20:37:01 2011 info Mojo::Server::Daemon:320 [2315]: Server listening (http://*:3000)
Server available at http://*:3000.
Результат:
Запросов в секунду: 763,72 [# / сек] (среднее значение)
4. Catalyst.
К сожалению, код слишком длинный, чтобы быть представленным здесь полностью, но контроллер Root содержит:
sub index :Path :Args(0) {
my ( $self, $c ) = @_;
# Hello World
$c->response->body( 'Hello World' );
}
Результат:
запросов в секунду: 727,93 [# / сек] (среднее значение)
5. WebNano
zby @ zby: ~ / progs / bench $ cat webnano.psgi
{
package MyApp;
use base 'WebNano';
1;
}
{
package MyApp::Controller;
use base 'WebNano::Controller';
sub index_action {
my $self = shift;
return 'This is my home';
}
1;
}
MyApp->new()->psgi_callback;
zby@zby:~/progs/bench$ plackup webnano.psgi
HTTP::Server::PSGI: Accepting connections at http://0:5000/
И результат:
запросов в секунду: 1884,54 [# / сек] (среднее значение)
Это изменится после добавления некоторых дополнительных функций.