Java リソースバンドルのパフォーマンス
-
11-09-2019 - |
質問
ResourceBundle と Locale を使用してプロパティ値を検索しています。非常に簡単に言うと、コードは次のようになります。
public static String getPropertyValue(Locale locale, String resourceName, String key) {
ResourceBundle resource = ResourceBundle.getBundle(resourceName, locale);
return resource.getString(key);
}
私の質問はパフォーマンスについてです。キャッシュのアプローチは、クラスパス上のプロパティ ファイルにアクセスするよりも迅速で、より良い実装でしょうか?私の理解では、ResourceBundle のパフォーマンスは一般的に非常に優れています。
プロパティ ファイル (この場合) は 30 行未満です (つまり、キーと値のペアが約 30 個)。
高負荷のページでも同様のアプローチを使用できますが、ルックアップオンデマンドのアプローチはコストがかかる可能性があるため、パフォーマンスに疑問があります。
解決
による Javadoc:
によって作成されたリソース バンドル インスタンス
getBundle
ファクトリ メソッドはデフォルトでキャッシュされ、キャッシュされている場合、ファクトリ メソッドは同じリソース バンドル インスタンスを複数回返します。
したがって、自分でキャッシュを行う必要はありません。ただし、キャッシュ動作をより細かく制御する必要がある場合は、 getBundle(String, ResourceBundle.Control)
オーバーロードしてカスタマイズされたものを渡します Control
で。
所属していません StackOverflow