mod_perlを使おう!

このエントリーをはてなブックマークに追加
46名無しさん@お腹いっぱい。
#!/usr/bin/perl
use CGI;
$q = new CGI;
print $q->header;
print "Hello, world\n";
をCGI、Apache::Registry、Apache::PerlRunで動かしてab -c10 -n1000してみた。
環境はPentium II 400MHz、メモリ512MB、FreeBSD 4.4-STABLE。

CGI
Connnection Times (ms)
min mean[+/-sd] median max
Connect: 0 7 67.3 0 1181
Processing: 171 1735 429.2 1738 3010
Waiting: 166 1729 430.0 1733 3005
Total: 171 1742 430.7 1745 3130

Apache::Registry
Connnection Times (ms)
min mean[+/-sd] median max
Connect: 0 18 11.0 18 133
Processing: 24 25 11.9 25 144
Waiting: 5 21 11.5 20 139
Total: 33 44 10.6 43 148

Apache::PerlRun
Connnection Times (ms)
min mean[+/-sd] median max
Connect: 1 16 12.8 15 197
Processing: 28 35 45.2 30 1006
Waiting: 4 30 44.4 26 986
Total: 28 51 46.0 46 1033

たしかにApache::Registryの方が速いけど、CGIに比べればApache::PerlRunも
かなり速い。BEGINブロックへの追い出しをきっちりやっていけばApache::Registry
とApache::PerlRunとの差は開くだろうけどね。
47名無しさん@お腹いっぱい。:01/12/16 23:01 ID:???
ちなみに、
main() { printf("Content-Type: text/html\n\n"); printf("Hello, world\n") }
をコンパイルしたCGIだと
Connnection Times (ms)
min mean[+/-sd] median max
Connect: 0 4 13.2 0 90
Processing: 10 105 345.4 11 2729
Waiting: 0 100 345.2 10 2725
Total: 10 110 346.3 11 2729

PHP 4.0.6で <?php echo("Hello, world\n"); ?> だと
Connnection Times (ms)
min mean[+/-sd] median max
Connect: 0 15 6.2 15 36
Processing: 12 20 10.6 19 290
Waiting: 5 17 10.5 16 286
Total: 30 35 8.5 34 293

もちろん、これは初期化にかかる時間を計測しているようなものなので、
実際のスクリプトでは違った結果が出ると思う。
(それにしてもCGIでperlを動かすのは遅すぎ)
48名無しさん@お腹いっぱい。:01/12/16 23:19 ID:???
Apache::PerlRunの結果が違ってた。本当は↓。欝氏。
Connnection Times (ms)
min mean[+/-sd] median max
Connect: 0 21 29.2 10 229
Processing: 8 101 295.4 42 3759
Waiting: 0 92 293.3 33 3703
Total: 8 122 295.5 80 3790