MASATOの開発日記


前の開発日記 次の開発日記 一覧

2004/03/01

HeimdallrというRSS Readerを開発していて思うのですが、RSS周辺のXMLベースの言語であるRSS、ATOM、OPMLは、 バージョンが色々あったり、仕様が曖昧だったりして対応する方は大変です。特にOPML。 仕様書にはほとんど何も書いてないので、同じようで違う様々なOPMLファイルがあり、対応する方は大変です。 しかし、どれもXMLベースであるが故、強力なXML解析ライブラリ(XML Parser)の支援を受けることができ、 対応する方は大変だと言っても楽です。HeimdallrはRSS 0.91/0.92/1.0/2.0、Atom 0.3、OPML 1.0/1.1に対応してはいるのですが、 対応に必要なコードは夫々のバージョンにつきたったの数十行であり、 これだけ様々な形式に対応したにしては楽だったなぁ、という印象がありました。 いやぁ、XMLってほんと便利ですね。

Heimdallrのパフォーマンス向上メモ

Heimdallrのパフォーマンスをさらに向上させていくにはどうすればいいか、というお話です。 私的なメモも兼ねているので内部構造にまで踏み込んでいます。

Heimdallrにどんどんサイト(RSSファイルのURL)を登録していくと、 パフォーマンス面で3点ほど問題がでてきます。

さて、次はどうやってこれらの問題を解決していくか、というお話です。 ユーザが問題があることに気が付かないようにできれば良いので、そこらへんを含めて考えて見ます。

まずは妥協可能なポイントを考えて見ます。

起動が遅くなる問題は、次のような解決策が考えられます。

しかし起動シーケンスに手を加えると言うのは結構大変です。特に並列処理なんてやると大変です。さてどうしたものでしょうか。

キーワード検索が遅くなる問題は、次のような解決策が考えられます。

キーワード検索アルゴリズム自体はもう最適化済でこれ以上の最適化方法が思いつきません。うーむ。

ダウンロードが遅くなる問題は、次のような解決策が考えられます。

他にもダウンロード時間を予測して表示するなど色々手はありそうですねー。

何故、記事が3000件のような場合のパフォーマンス問題を気にしているかと言いますと、 Heimdallrはバージョン1.02からRSSファイルと同じようにOPMLファイルを扱えるようになる予定です(OPMLによるインポート/エクスポート機能とは異なるものです)。 つまり、一つのサイトのURLとしてOPMLファイルのURLを登録すると、OPMLファイルをダウンロードし、 その中にURLが記述されているRSSファイルを全てダウンロードし、 全ての記事のキーワード検索などを行い、適当に絞り込んでビューに表示してくれます。
この機能は便利なことは便利なのですが、ひょいひょいOPMLファイルのURLを登録していくと、 記事の数が100件単位で増えていき、3000件などあっという間に越してしまいます。 というわけで、記事の数が3000を超える事は「良くある事」になってしまうわけです。 そして各種パフォーマンス問題が発生し、「なんじゃこりゃー」となるわけです。

Heimdallrは、以前の日記にあるように、軽快に動作することが売りの一つなので、こういうパフォーマンス問題はちょっと許しがたいものがあります。 バージョン1.02までにこれらのパフォーマンス問題を解決できる見込みはないので、 OPML登録機能をOFFにしてしまおうかとも思いましたが、 せっかく実装した機能をOFFにするのももったいないので、 ドキュメントには書かない隠し機能としておく予定です。

前の開発日記 次の開発日記 一覧