解釈の議論には入りたくありません (ほとんどの現実世界のシナリオでは、これらのオーバーヘッドはまったく影響しません) - しかし、ここに私のテストがあります:
1. ピュア・プラック
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
で私は得る
1 秒あたりのリクエスト数: 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.モジョリシャス::ライト
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.
結果: 1 秒あたりのリクエスト数: 763.72 [#/秒] (平均)
4.触媒。
残念ながら、コードは長すぎてここにすべてを示すことはできませんが、ルート コントローラーには次のものが含まれています。
sub index :Path :Args(0) {
my ( $self, $c ) = @_;
# Hello World
$c->response->body( 'Hello World' );
}
結果は次のとおりです。
1 秒あたりのリクエスト数: 727.93 [#/秒] (平均)
5. ウェブナノ
zby@zby:~/progs/bench$ 猫 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/
そして結果:
1 秒あたりのリクエスト数: 1884.54 [#/秒] (平均)
これは、いくつかの機能が追加された後に変更されます。