2012-03-05 12 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 ऑब्जेक्ट्स को सहेजना सुरक्षित है और "टेक्स्ट" फ़ील्ड को प्रतिस्थापित करने के लिए बस query.field("text").equal(text) पर कॉल करें? ऐसा लगता है कि सत्यापन कुल समय का लगभग 30% ले रहा है।

उत्तर

3

हाँ, आप यह कर सकते हैं। प्रत्येक फ़ील्ड को मानचित्र में संग्रहीत किया जाता है ताकि इसे कई बार बुलाया जा सके।

संबंधित मुद्दे