次のコードでいくつかの周波数カウンターをインクリメントするコードをプロファイリングしています。
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% を占めているようです。