2014-11-02 2 views
2

Я никогда не уверен, поэтому я обычно оказываюсь непоследовательным.Стиль или производительность: «new ContentValues ​​()« VS »contentValues.clear()«

Что эффективнее:

  1. Воссоздание ContentValues много раз
  2. Создание ContentValues один раз, а затем призывая clear() каждый раз, прежде чем использовать его

Пример (1):

while (condition) { 
    ContentValues values = new ContentValues(); 

    // Add to values 

    // Create an operation 
} 

// Execute a batch of operations 

Пример (2):

ContentValues values = new ContentValues(); 

while (condition) { 
    values.clear(); 

    // Add to values 

    // Create an operation 
} 

// Execute a batch of operations 

Предполагая, что достаточно большое количество итераций, чтобы сделать разницу.

+0

не беспокойтесь об эффективности на данный момент. Я хотел бы создать новый объект на каждой итерации, в случае, если в какой-то момент вам нужно использовать его в контексте, в котором ContentValues ​​живет дольше, чем цикл (например, если вы помещаете объекты в очередь для обработки в другой поток.) – njzk2

ответ

0

Типичное использование случай ContentValues ​​как это:

// Defines an object to contain the new values to insert 
ContentValues mNewValues = new ContentValues(); 

/* 
* Sets the values of each column and inserts the word. The arguments to the "put" 
* method are "column name" and "value" 
*/ 
mNewValues.put(UserDictionary.Words.APP_ID, "example.user"); 
mNewValues.put(UserDictionary.Words.LOCALE, "en_US"); 
mNewValues.put(UserDictionary.Words.WORD, "insert"); 
mNewValues.put(UserDictionary.Words.FREQUENCY, "100"); 

Теперь вы, как вы используете его для ваших требований является Шифрование до вас, в зависимости от того, что ваша логика требует от hasMore()

0

Я бы пойти со значениями .clear() каждый раз. Теперь, когда я думаю об этом, если набор ключей фиксирован, то есть вы добавляете значения для одного и того же набора ключей на каждой итерации, вам также не нужно очищать(). Вы будете перезаписывать его для каждой итерации.