Что лучше в цикле - context.getString () или переменная? - PullRequest
1 голос
/ 24 ноября 2011

Я использую несколько строк, которые определены в файле ресурсов. Что лучше с точки зрения использования ресурсов и производительности? Вызовите context.getString(stringId) каждый отдельный цикл или сохраните context.getString(stringId) в переменной вне цикла и используйте эту переменную в цикле.

Какой-то псевдокод ...

Без переменной:

while (condition) {
   DoSomethingWithString(context.getString(stringId));
}

с переменной:

String variable = context.getString(stringId);
while (condition) {
   DoSomethingWithString(variable);
}

Еще несколько мыслей ... переменные вещи выглядят как лучшее решение, потому что нет необходимости каждый раз извлекать данные из файла ресурсов. Но вы должны использовать еще одну переменную. Хорошо, в данном случае это всего лишь одна переменная, но это также только псевдо-пример, поэтому он может добавить некоторое использование ресурсов. Кроме того, resourcestring необходимо скопировать в другую строку, прежде чем использовать эту строку (производительность?). Использование context.getString(stringId) в цикле может быть лучшим решением, когда компилятор байт-кода выполняет хорошую работу по оптимизации.

1 Ответ

2 голосов
/ 24 ноября 2011

(Согласно моему пониманию вашего вопроса) я советую вам сохранить context.getString (stringId) в переменной вне цикла и использовать эту переменную в цикле.

Потому что в этом цикле for исполнителю программы не нужно каждый раз отправляться для извлечения данных из файла String. Это просто ссылка на одну переменную.

Например:

String result = context.getString(id);

for(int i=o;i<some.size();i++)
{
 Log.d(TAG, result);
}
...