2012-03-05 9 views
5

Sono appena stato profiling del codice dove ho incrementare alcuni contatori di frequenza con il seguente codice:Esiste un buon modello per riutilizzare le query di Morphia?

Datastore ds = ... 
    final Query<Unit> query = ds.createQuery(Unit.class); 
    query.field("text").equal(text); 
    query.field("langCode").equal(lang.getCode()); 
    UpdateOperations ops = ds.createUpdateOperations(Unit.class); 
    ops.inc("frequency", value); 
    ds.update(query, ops, false); 

La creazione della query richiede quasi il 50% del tempo di esecuzione, e mi piacerebbe riutilizzare il lavorare in qualche modo. È sicuro salvare gli oggetti e ops in un ThreadLocal e chiamare nuovamente query.field("text").equal(text) per sostituire il campo "testo"? Sembra anche che la convalida stia assorbendo circa il 30% del tempo totale.

risposta

3

Sì, lo puoi fare. Ogni campo è memorizzato in una mappa in modo che lo sostituisca quando viene chiamato più volte.

Problemi correlati