Производительность Java ResourceBundle - PullRequest
22 голосов
/ 02 декабря 2009

Я использую 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 пар ключ / значение).

Я подвергаю сомнению производительность, поскольку мы могли бы использовать аналогичный подход на страницах с высокой нагрузкой, и подход поиска по требованию может оказаться дорогостоящим.

1 Ответ

26 голосов
/ 02 декабря 2009

Согласно Javadocs :

Экземпляры комплекта ресурсов, созданные фабричными методами getBundle, кэшируются по умолчанию, а фабричные методы возвращают один и тот же экземпляр комплекта ресурсов несколько раз, если он был кэширован.

Так что вам не нужно делать кеширование самостоятельно. Но если вам нужно более детальное управление поведением кэширования, вы можете использовать перегрузку getBundle(String, ResourceBundle.Control) и передать настроенную Control in.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...