2012-03-05 10 views
5

私はちょうど私が次のコードで、いくつかの周波数カウンタをインクリメントするいくつかのコードをプロファイリングしてきた:Morphiaのクエリを再利用するための良いパターンはありますか?

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%を取り、私は再利用したいのですが何とか働く。 queryopsのオブジェクトをThreadLocalに保存して、query.field("text").equal(text)をもう一度呼び出して "text"フィールドを置き換えても安全ですか?検証では合計時間の約30%を占めるように見えます。

答えて

3

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

関連する問題