JPAセミナー#1でJay Shirley氏が絶賛していたlocal::libですが、その際に「異なるバージョンのモジュールをテストするのにも便利ですね」とか言っていた気がするので、早速やってみました。
お題は、Catalystで先日公開されたMoose版の5.8と旧5.7をベンチマーク比較してみます。
まずはCatalyst::Runtime 5.71001を$HOME/cat5.7にインストールします。
$ cd
$ perl -MCPAN -Mlocal::lib=cat5.7 -e 'CPAN::install("M/MR/MRAMBERG/Catalyst-Runtime-5.71001.tar.gz")'
次にCatalyst::Runtime 5.8(この時点での最新版は5.8001でした)を$HOME/cat5.8にインストールします。
$ cd $ perl -MCPAN -Mlocal::lib=cat5.8 -e 'CPAN::install(Catalyst::Runtime)'
$HOME/MyAppに新しいCatalystアプリケーションを作ります。
$ cd $ catalyst.pl MyApp $ cd MyApp
後は
$ perl -Mlocal::lib=~/cat5.8 script/myapp_server.pl
とやればテストサーバーがCatalyst 5.8で起動するし
$ perl -Mlocal::lib=~/cat5.7 script/myapp_server.pl
とやれば5.7で起動します。
で、参考までにベンチ結果ですがベンチ用に最小構成にした以下のアプリケーションをテストサーバーで立ち上げてとってみました。
lib/MyApp.pmpackage MyApp; use strict; use warnings; use Catalyst::Runtime; use parent qw/Catalyst/; __PACKAGE__->config( name => 'MyApp' ); __PACKAGE__->setup(); 1;lib/MyApp/Controller/Root.pm
package MyApp::Controller::Root;
use strict;
use warnings;
use parent 'Catalyst::Controller';
__PACKAGE__->config->{namespace} = '';
sub index :Path :Args(0) {
my ( $self, $c ) = @_;
$c->response->body( $Catalyst::VERSION );
}
1;
ab -n 1000 -c 10 http://localhost:3000/の結果は
5.71001Requests per second: 164.87 [#/sec] (mean) Time per request: 60.653 [ms] (mean) Time per request: 6.065 [ms] (mean, across all concurrent requests) Transfer rate: 18.30 [Kbytes/sec] received5.80001
Requests per second: 156.48 [#/sec] (mean) Time per request: 63.907 [ms] (mean) Time per request: 6.391 [ms] (mean, across all concurrent requests) Transfer rate: 17.37 [Kbytes/sec] received
でした。
この辺は参考程度にしかなりませんが、そこそこいい線行ってると思います。

コメントする