トップ «前の日記(■2004-12-17) 最新 次の日記(■2004-12-26)» 編集

どんぞこ日誌

2003|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|07|08|12|
2007|01|04|08|12|
2008|01|02|03|04|06|07|08|10|11|12|
2009|01|02|04|05|06|07|08|09|11|12|
2010|01|03|04|07|08|10|11|12|
2011|01|02|03|04|05|06|07|08|10|12|
2012|01|02|03|05|06|07|08|09|10|
2013|01|02|07|08|09|
2014|08|09|
2015|08|
2016|06|07|12|
2017|01|03|08|
2018|03|
2022|03|
2023|03|
2024|02|

同人関連(どんぞこ楽屋) | 旧い雑文   


■2004-12-21

* [Perl] ActivePerl 5.8.6B!

 ActivePerl 5.8.6がリリースされていました。

* [メモ] Googleにキャッシュ閲覧を拒否されるB!

 googleにアクセスできません、なんで? 

 とりあえずhttp://216.239.39.104/とかhttp://216.239.37.99/を使う。

* [今月のAcme] 今月の……B!

 Acme(本年最後)の変わりにPHP::Perlinfoを紹介しようと思ったら、既に紹介されている方が。改めて12月分のAcmeを探したいと思います。"Content-Type: text/html を最初に吐き出す" のは、もとのphpinfo()がContent-Type: text/htmlを吐き出すのをまねているからのようにも思えます。

 ついでに次の記事で知ったClass::DBI::Plugin::Iteratorをメモ。素晴らしい。さっそく勤め先で試してみたいな。

* [Perl] Plugin::Iteratorの利用B!

  Class::DBI::Plugin::Iteratorを使ってみました。Class::DBI::Pagerと一緒に使うと速いはやい。ただnextを使うとそのたびにSQLが発行されるので手元にある既存のコードで使おうとするとやばいかも。試しにPostgres 7.2で約23000件のデータをretrieve_allしてひたらすら$it->nextしてみました。通常のDBI::Class::Iteratorだと全部まわるのに6秒(retrieveするところから計測)。次にPlugin版ですが、最初の1000件目がまわるのに5秒、次の1000件に11秒、以下17, 24, 29……と、累積的に時間がかかって、いつ果てるともわからないので5000件経過した時点で強制終了。

  そこで、LIMITに任意の値を与えられるようにして、データがあるうちはSQLを発行しないように改良してみました。LIMITの値を増やしていくとLIMITが100で全部まわるのに23秒。以下500→11秒、1000→9、2000→8、5000→8、10000→8。同様に約190000件のデータでやってみたところ、通常版48秒に対しLIMIT 10000で64秒。これで一安心? 
  差分はこんな感じ(下に修正版)。

 use Class::DBI::Plugin::Iterator;
 __PACKAGE__->next_cache_num(200);

next_cache_numを呼び出さない場合は100に設定されます。

[追記] 最初のものは、毎回律儀にfetchしていたので処理に時間がかかるのと、fetchし終わった後にnextするとエラーになりました。そこで一気にオブジェクトを抱えるように修正しました。約190000件のデータはnext_cache_num(10000)で45秒に。 差分2(v.0.03に対して)

[]