La chiamata del metodo createOrUpdate(...)
di ORMLite createOrUpdate(...)
nella mia app è molto lenta.La creazioneOrUpdate di ORMLite sembra lenta: qual è la velocità normale?
Ho un oggetto molto semplice (Item
) con un 2 int (una è la generatedId
), un String
e double
. Esamino il tempo necessario (approssimativamente) per aggiornare l'oggetto nel database (100 volte) con il codice seguente. I registri dichiarazione di registro:
tempo di aggiornare 1 fila 100 volte: 3069
Perché ci vuole 3 secondi per aggiornare un oggetto 100 volte, in una tabella con solo 1 fila. È questa la normale velocità ORMLite? In caso contrario, quale potrebbe essere il problema?
RuntimeExceptionDao<Item, Integer> dao =
DatabaseManager.getInstance().getHelper().getReadingStateDao();
Item item = new Item();
long start = System.currentTimeMillis();
for (int i = 0; i < 100; i++) {
item.setViewMode(i);
dao.createOrUpdate(item);
}
long update = System.currentTimeMillis();
Log.v(TAG, "time to update 1 row 100 times: " + (update - start));
Se creo 100 nuove righe, la velocità è ancora più lenta.
Nota: sto già utilizzando ormlite_config.txt
. Registra "Loaded configuration for class ...Item"
quindi questo non è il problema.
Grazie.
Grazie! Il metodo callBatchTasks lo rende molto più veloce, rende la velocità accettabile, se non perfetta. 300 ms risulteranno in un piccolo hickup quando l'utente sta scorrendo (immagino). L'unica soluzione è spostarlo in un thread separato? – Frank
Passare a un thread separato, se si può effettivamente farlo in background, non bloccherà sicuramente l'interfaccia utente. Potresti provarlo @ Frank. – Gray
Su un sidenote a questo, la [documentazione] (http://ormlite.com/javadoc/ormlite-core/doc-files/ormlite_5.html#index-callTask) mostra una sintassi non valida (vecchia?) Nell'esempio per 'callBatchTasks' (il primo parametro è ConnectionSource). – Czechnology