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% を占めているようです。

4

1 に答える 1

3

はい、できます。各フィールドはマップに格納されるため、複数回呼び出されると置換されます。

于 2012-03-05T19:43:58.753 に答える