WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:ライブラリ読み込みなどの速度について

はるか [WriteDate : Tue May 29 21:35:23 2001]

質問させて下さい。

前から思っていたのですが、
外部にあるパッケージやライブラリ(でしたっけ?)をrequireで
読み出す時、どれぐらい時間がかかるのでしょうか?
Perlはインタープリタだそうなので、やっぱり使わないかもしれない
モジュールは外部に置いた方がいいのでしょうか?

それでその時思うのが、外部モジュールを requireするのと、
もとからsubでサブルーチンが書いてあるのでは、どっちが速いのか
と疑問に思うのです。

また、一度外部モジュールを requireすれば、
subと同じように扱われるのでしょうか?(Perlの中で。)(たぶんそうですよね?)

以上、長くなりましたが、よろしくお願いします。


ふじ [URL] [WriteDate : Wed May 30 03:05:18 2001]

jcode.pl (v2.13) を使って、手元の機械 (OS: Kondara/MNU Linux1.2, Perl-5.005_03, CPU AMD Duron800)
で以下のようなコードでベンチを取ってみると、
--
#!/usr/bin/perl
use Benchmark;
timethis(1000, "do 'jcode.pl'");
--
$ perl bench.pl
timethis 1000: 20 wallclock secs (19.28 usr +  0.34 sys = 19.62 CPU)

となりました。1000回実行して20秒だから、1回あたり 0.02秒ですね。
# 2回目以降はディスクキャッシュに入ってしまって
# ディスクアクセスを伴ってないので、初回はもう少し遅いでしょうが。

> Perlはインタープリタだそうなので、やっぱり使わないかもしれない
> モジュールは外部に置いた方がいいのでしょうか?
使う時にはじめて require するなら、その方がいいでしょう。
ただし、use を使ってモジュールを読み込むと
(スクリプトのどこに書いても) コンパイル時に読み込みます。

> 外部モジュールを requireするのと、
> もとからsubでサブルーチンが書いてあるのでは、どっちが速いのか
> と疑問に思うのです。
一旦読み込まれてしまえば同じです。別ファイルになっていると
ディスクアクセスが発生するので多少は遅くなるかもしれませんが、
そもそもそれだけ負荷を考慮しなくてはいけないぐらい頻繁に
起動されるスクリプトならば、もっと根本的な対処 (mod_perl を使うとか)
をすべきでしょう。
# require の速度を気にするよりも、メインの処理全体のアルゴリズムを見直す
# (ファイル丸ごと配列にぶち込むのをやめるとか) 方が大抵良い結果を
# もたらすとは思いますが。


ふじ [URL] [WriteDate : Wed May 30 03:05:19 2001]

jcode.pl (v2.13) を使って、手元の機械 (OS: Kondara/MNU Linux1.2, Perl-5.005_03, CPU AMD Duron800)
で以下のようなコードでベンチを取ってみると、
--
#!/usr/bin/perl
use Benchmark;
timethis(1000, "do 'jcode.pl'");
--
$ perl bench.pl
timethis 1000: 20 wallclock secs (19.28 usr +  0.34 sys = 19.62 CPU)

となりました。1000回実行して20秒だから、1回あたり 0.02秒ですね。
# 2回目以降はディスクキャッシュに入ってしまって
# ディスクアクセスを伴ってないので、初回はもう少し遅いでしょうが。

> Perlはインタープリタだそうなので、やっぱり使わないかもしれない
> モジュールは外部に置いた方がいいのでしょうか?
使う時にはじめて require するなら、その方がいいでしょう。
ただし、use を使ってモジュールを読み込むと
(スクリプトのどこに書いても) コンパイル時に読み込みます。

> 外部モジュールを requireするのと、
> もとからsubでサブルーチンが書いてあるのでは、どっちが速いのか
> と疑問に思うのです。
一旦読み込まれてしまえば同じです。別ファイルになっていると
ディスクアクセスが発生するので多少は遅くなるかもしれませんが、
そもそもそれだけ負荷を考慮しなくてはいけないぐらい頻繁に
起動されるスクリプトならば、もっと根本的な対処 (mod_perl を使うとか)
をすべきでしょう。
# require の速度を気にするよりも、メインの処理全体のアルゴリズムを見直す
# (ファイル丸ごと配列にぶち込むのをやめるとか) 方が大抵良い結果を
# もたらすとは思いますが。


ふじ [URL] [WriteDate : Wed May 30 03:06:11 2001]

ありゃ。ダブってしまいました。すみません。


ふじ [URL] [WriteDate : Wed May 30 03:06:13 2001]

ありゃ。ダブってしまいました。すみません。


はるか [WriteDate : Thu May 31 21:53:49 2001]

なるほど、そこまで気にすることでもないようですね。
やはり、UNIXというか、サーバーの処理は速いのですね。
ありがとうございます、ふじさん!!

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]
ChaichanPAPA's World