最初、なんでデコードとパフォーマンスが関係あるねん、とすごい考え込んでしまったが、俺らへのリンクは話の枕だったのね。おれがDISられたのかと思って憤慨したエントリ書くところだった。



http://blog.livedoor.jp/dankogai/archives/50816853.html



POEは確かにLWP::UserAgentに比べたら明らかにメモリ食います。1リクエストを発行するだけのためにPOEを立ち上げるためのプログラミングと時間/リソースのオーバーヘッドを考えると単純なGETを比較的遅めの間隔で行うのにはあまりおすすめできません。


POEやDanga::Socketのような非同期なフレームワークを使い始める真のメリットは多分1)半永久的に2)大量のURLを3)同時に 処理しつづける、という条件が揃ってる時だと思います。この点、POEとかは単純な"scraper"にはそれほど向いてない。あちこちのURLを取りに行く"crawler"ならいける。


あ、ちなみにGunghoはKeepAliveを効率よく使います。まぁPOEがkeepaliveに対応してるからなんだけど。



my $keepalive = POE::Component::Client::Keepalive->new(%$keepalive_config);
...
POE::Component::Client::HTTP->spawn(
Agent => "Gungho/$Gungho::VERSION",
%$client_config,
Alias => &UserAgentAlias,
ConnectionManager => $keepalive,
);