java.util.ResourceBundle のキャッシュ

私のマシンで TomcatKaffe で起動すると1分以上かかるのに、Sun JDK で起動すると10数秒。理由を調べると GNU Classpathjava.util.ResourceBundle の読み込みが遅いようだ。

ResourceBundle は getBundle() でロードしたバンドルを内部的にキャッシュしているのだが、現在の実装ではそのキャッシュの積極性が足りないように思う。例えば MyResource というリソースを ja_JP というロケールでロードする場合、システムは MyResource_ja_JP, MyResource_ja, MyResource という3つのリソースを読み込む必要がある。GNU Classpath の現在の実装では3つのうち MyResource_ja_JP しかキャッシュしていないが、残りの2つもキャッシュすべきだと思われる。

たぶん起動がかなり速くなると思うが、こういう提案は bugzilla で出しても受け入れられにくいかも。とりあえず積極的なキャッシュを実装してみるけど。結局、私だけのプライベートパッチが増えていく……。