我不想深入讨论解释问题(对于大多数真实场景,这些开销根本没有任何影响)- 但这是我的测试结果:
1. 纯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 [#/sec](平均值)
2. Dancer
zby@zby:~/progs/bench$ cat dancer.pl
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 ...
用类似的 A/B 测试我得到了:
每秒请求数:1570.49 [#/sec](平均值)
3. Mojolicious::Lite
zby@zby:~/progs/bench$ cat mojo.pl
use Mojolicious::Lite;
get '/' => sub {
my $self = shift;
$self->render(text => "Hello!");
};
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 [#/sec] (平均值)
4. 催化剂(Catalyst).
不幸的是,代码过长无法在此完整呈现,但Root控制器包含:
sub index :Path :Args(0) {
my ( $self, $c ) = @_;
$c->response->body( 'Hello World' );
}
结果是:
每秒请求数:727.93 [#/sec](平均值)
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 [#/sec](平均值)
在添加更多功能后,这将会发生改变。