2012-09-02 13 views
12

मैं स्क्लाइट क्वेरी की पंक्तियों पर लूपिंग के लिए निम्न पंक्तियों का उपयोग कर रहा हूं।क्या स्क्लाइट क्वेरी से पंक्तियों के माध्यम से पुनरावृत्ति करने का कोई तेज़ तरीका है?

this.open(); // opening db 
Cursor cursor = db.rawQuery(strQuery, null); 

cursor.moveToFirst(); 
do {  

    // do something  

} while (cursor.moveToNext()); 

cursor.close(); 

जब पंक्तियों की संख्या लगभग 15000 होती है तो इसमें काफी समय लगता है। खाली while ब्लॉक के लिए लगभग 4 सेकंड लगते हैं और while ब्लॉक के लिए लगभग 6 सेकंड होते हैं जिनमें कुछ कोड होते हैं। यह दिखाता है कि इस तरह से पंक्तियों पर पुनरावृत्ति समय लेने वाली है।

क्या एंड्रॉइड और स्क्लाइट में पंक्तियों पर लूप करने का कोई तेज़ तरीका है?

धन्यवाद,

+0

मैं SQLite के लिए अपने उपयोग के मामलों के बारे में सुनिश्चित नहीं कर रहा हूँ, लेकिन इस काम का हो सकता है: http://shopwith.it/2011/12/16/how-to-improve-android -एप-प्रदर्शन-द्वारा-कैशिंग-डेटा-इन-एसक्लाइट-एंड-इमेज-टू-द-एसडी-कार्ड-एंड्रॉइड-डेवलपर-टिप्स/ – Eric

+0

यदि आप इसके लिए तैयार हैं, तो क्या आप समझा सकते हैं कि आपको पुनर्प्राप्त करने की आवश्यकता क्यों है एक बार में इतने सारे रिकॉर्ड? क्या आप अपने चयन कथन में कम से कम पतन नहीं कर सकते? –

उत्तर

4

अनुकूलन क्या आप पाश अंदर कर पूरे आपरेशन की गति में सुधार लाने का एकमात्र रास्ता है। उदाहरण के लिए यदि आप प्रत्येक पुनरावृत्ति पर getColumnIndex कॉल कर रहे हैं, तो आप कीमती समय खो देंगे। इसे एक बार करें, मूल्य संग्रह करें।

traceView का उपयोग यह पता लगाने के लिए करें कि आप कहां खो रहे हैं और वहां सुधार कर रहे हैं। अफसोस की बात है कि मैं एक ठोस जवाब नहीं दे सकता, क्योंकि मुझे नहीं पता कि आप लूप के अंदर क्या कर रहे हैं।


Traceview Debugging

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

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