2012-03-05 6 views
5

Właśnie zostałem profilowania kodu gdzie inkrementować niektóre liczniki częstotliwości z następującego kodu:Czy istnieje dobry wzór do ponownego wykorzystania zapytań Morphy?

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); 

Utworzenie zapytania trwa prawie 50% czasu wykonania, i chciałbym, aby ponownie wykorzystać jakoś pracować. Czy można bezpiecznie zapisać obiekty query i ops w wątku LocalLocal i ponownie wywołać query.field("text").equal(text) ponownie, aby zastąpić pole "tekstowe"? Wygląda również na to, że walidacja zajmuje około 30% całkowitego czasu.

Odpowiedz

3

Tak, możesz to zrobić. Każde pole jest przechowywane na mapie, więc zostanie zastąpione, gdy zostanie wywołane wiele razy.