Я только что профилировал некоторый код, где я увеличивал некоторые счетчики частоты следующим кодом:
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% от общего времени.