2012-03-05 5 views
5

Я только что профилирование некоторый код, где я инкремент некоторые частотные счетчики со следующим кодом:Есть ли хороший образец для повторного использования запросов Морфий?

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

Создание запроса занимает почти 50% времени выполнения, и я хотел бы повторно использовать работать как-то. Можно ли сохранить объекты query и ops в ThreadLocal и просто позвонить query.field("text").equal(text) еще раз, чтобы заменить поле «текст»? Также похоже, что валидация занимает около 30% от общего времени.

ответ

3

Да, вы можете это сделать. Каждое поле хранится на карте, поэтому оно будет заменено при вызове несколько раз.

Смежные вопросы