2004-12-21
CPANに登録ですか
FeedBack にも導入してみようかな。ちなむと、CPAN に up 希望です。Class::DBI のパフォーマンスを上げる Class::DBI::Plugin::Iterator
CPANに上げるのはいいんですが、誰かやりかた教えてください。
――と思ったらこんなドキュメントを発見。うーん、上げちゃっていいのか心配になります(苦笑)。
あと、PAUSEにアカウントを作らなくちゃいけないような気がするのと、英語でドキュメントを書かなくちゃいけない*1っぽいのが難点かな。
ちなみにClass::DBI::Pagerの改善がどうのというよりも、Class::DBI::Iteratorを使えば全件取得しないと勘違いして使っていたので*2、それの対策をしなくちゃなと思ってたのです。
本当はClass::DBI::Liteとか作るつもりだったのでした*3。
パフォーマンス
これ、全体のベースクラスでプラグインしてしまうと、数行のデータ読み込み時とかで遅くなっちゃうかもなので、このプラグインを当てたページ処理の時専用のクラス作って、ページ処理の時とかだけオブジェクトを再blessしてやったりしたらどうだろうか。
むしろオブジェクトの再定義分遅くなっちゃったりしちゃうのかな。Class::DBIのパフォーマンスアップ
ええと、数行の読み込みの時は圧倒的に早くなります。イテレータを生成するときはSQLを発行しませんから。
むしろ全件一気に表示するときのほうがパフォーマンス的には良くないです*4。が、そういうときはイテレータを使わないと思うので、問題ない気がしてます。
そうでもない?
細かくバージョンアップ
新版上げました。
改良点は
- dataメソッドがまともに値を返すようになった。
- delete_allメソッドの改善
- 日本語ドキュメントの追加
- 他、こまごまと
あたりです。確か。
TODO
ドキュメントを英語にするのと、先読み(prefetch)を追加したらCPANに登録するのも良いかと思うのですが。思うだけで終わりそう……。
ほか気付いてる点でまずそう(だけど動くからいいよね的)なのは、
- SQLを発行してるトコはevalで囲んでおいたほうが親切かもね
- sliceを使ったときの挙動をClass::DBI::Iteratorと同じにする(けど、あっちが変だと思う)
- インデントはタブにしておいたほうがいい?
あたり。