Perlコーディング初心者質問スレ Part 57at PHP
Perlコーディング初心者質問スレ Part 57 - 暇つぶし2ch47:37
08/02/29 20:11:23
>>39
あれ、そうなん?って思って、ウチでもちょっと実験してみた。
人のサイトにリクエスト送りまくるんは、ちょっとアレなんで、LAN上に50MBほどのファイルを用意してやってみた。

perl -v
This is perl, v5.8.8 built for MSWin32-x86-multi-thread (WinXp + ActivePerl5.8.8-822)
LWP/5.808 LWP-UserAgent/2.036
の環境だと、この50MBのファイルを受け取って書き出すまでに、実に573秒(9分33秒)かかった。
ちなみに、ab で計測すると約4.7秒で転送できる。
その時、タスクマネージャーで監視していると、CPU80-90%くらいで、システム(グラフの赤色)が40%を占めてる。
で、メモリの使用量が、1~2秒おき位に、30~40MB位まとめて、増えたり減ったり激しく変動してる。

そこで、
perl -v
This is perl, v5.8.8 built for i386-linux-thread-multi (Linux/CentOS5.1 + i386.rpm)
LWP/5.808 LWP-UserAgent/2.036
の環境で同じことをやってみたら、ファイル書き出し完了までで、なんと5.3秒!
ab での計測で約4.6秒はWin環境とほとんど変わらず。コレにDisk書き込みの時間が足されてまあこんなもんか。

ちょっとソース読んでみたけど、LWP内部で特に問題になるようなところはなさそう。
WinとLinuxで違いもない(Version同じだから当たり前か)。
多分、IO::Socketとか、もっとCoreに近い部分が原因で、とくにActivePerlとWin環境だけで>>32>>37みたいになるのかな。

>>38
確かに、HTMLやテキストファイルだけでそんな容量使ってるサイトは、非常識と言えるかも知れないけど、
画像や音楽、動画、アプリケーションのzipやtarなんかだと、数MB~数十MBなんかはザラにあるから、
そんなんクロールして取得しようとか以前思った時に、>>37みたいな現象に遭遇したんだ。
まあそん時は、Win環境しかなくて、今回みたいに検証すらしなかったんだが・・・。
おっしゃるように、max_sizeで小分けにするのがベターなやりかたかな。


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch