मुझे उत्सुकता है कि किसी ने ContentProvider
पर ContentResolver
के माध्यम से एक ही प्रक्रिया में SQLiteDatabase
ऑब्जेक्ट से पूछताछ के विरुद्ध कोई प्रदर्शन परीक्षण किया है। मुझे लगता है कि ContentResolver
क्वेरी एक कर्सर वापस भेजती है जो एक बाइंडर (एंड्रॉइड आईपीसी) के माध्यम से डेटाबेस के साथ संचार करती है। इसका मतलब यह है कि अगर मैंने Cursor
के माध्यम से 100 रिकॉर्ड की सामग्री पढ़ी है तो 100 बाइंडर विधि कॉल का परिणाम होगा। क्या मेरे अनुमान सही हैं और यदि ऐसा है तो यह उसी प्रक्रिया में डेटाबेस तक पहुंचने से काफी धीमा होगा?एंड्रॉइड कंटेंटप्रोवाइडर प्रदर्शन
उत्तर
मैंने बिल्कुल ठीक नहीं किया है। मैंने जो किया वह ContentProvider के माध्यम से या सीधे SQLite डेटाबेस के माध्यम से एकाधिक प्रविष्टियों के प्रदर्शन को आश्वस्त करना था। मैंने लगभग 1000 आइटम (एक करके एक) डाला। ContentProvider के माध्यम से डालने के लिए यह बहुत धीमा था। मेरे परीक्षण में लगभग 10% धीमी है।
यदि आप 1000 आइटम एक-एक करके सम्मिलित करने जा रहे हैं तो आप 'ContentProviderOperation' का उपयोग करेंगे और' बैचइन्सर्ट 'करेंगे। एक-एक करके 1000 आइटम डालने से आप जो भी इस्तेमाल करते हैं, वह अविश्वसनीय रूप से धीमा होगा, इसलिए मैं इस बेंचमार्क को बहुत अधिक नहीं देखूंगा। मेरे अनुभव में, "ContentProvider' का उपयोग करके" और "ContentProvider' का उपयोग न करने" के बीच का अंतर कभी भी गति/दक्षता के साथ नीचे नहीं आ गया है जिसके साथ संचालन किए जाते हैं। –
- 1. एंड्रॉइड कंटेंटप्रोवाइडर - एक डालने विधि
- 2. एंड्रॉइड कंटेंटप्रोवाइडर getType() को कब और क्यों
- 3. एंड्रॉइड ब्रॉडकास्ट रिसीवर, कंटेंटप्रोवाइडर और गतिविधि के बीच डेटाफ्लो?
- 4. एंड्रॉइड। एनीमेशन प्रदर्शन
- 5. एंड्रॉइड एचटीपी क्लाइंट प्रदर्शन
- 6. सेन्चा टच 2 - एंड्रॉइड प्रदर्शन
- 7. एंड्रॉइड फ्लोटिंग पॉइंट गणित प्रदर्शन
- 8. एंड्रॉइड में प्रदर्शन रोटेशन हैंडलिंग
- 9. सेन्चा टच 2 एंड्रॉइड प्रदर्शन
- 10. एंड्रॉइड प्रदर्शन एपीआई स्तर 11 और ऊपर
- 11. एंड्रॉइड जिंजरब्रेड में ओपनजीएल खराब प्रदर्शन
- 12. एंड्रॉइड ड्रॉ बिटमैप 5x प्रदर्शन अंतर
- 13. एंड्रॉइड बनावट व्यू बनाम वीडियो व्यू प्रदर्शन
- 14. एंड्रॉइड - प्रदर्शन नाम से संपर्क खोजें
- 15. एंड्रॉइड Google मानचित्र v2 बहुभुज प्रदर्शन समस्या?
- 16. एंड्रॉइड कंटेंटप्रोवाइडर यूआरआई योजना को कर्सर एडाप्टर को सूचित करने के लिए बाहरी जॉइन प्रश्नों पर सुनना
- 17. प्रदर्शन या प्रदर्शन का प्रदर्शन (||) बनाम ऐरे()
- 18. Asp.net एमवीसी 2 प्रदर्शन प्रदर्शन प्रदर्शन समस्या?
- 19. अपाचे वेग प्रदर्शन प्रदर्शन?
- 20. मल्टीकास्ट प्रदर्शन प्रदर्शन
- 21. एंड्रॉइड एमुलेटर प्रदर्शन वास्तविक डिवाइस प्रदर्शन से तुलना कैसे करता है?
- 22. प्रदर्शन
- 23. प्रदर्शन
- 24. प्रदर्शन
- 25. प्रदर्शन
- 26. प्रदर्शन
- 27. प्रदर्शन
- 28. प्रदर्शन
- 29. प्रदर्शन -
- 30. एंड्रॉइड स्पिनर प्रदर्शन पर क्लिक करें Item चयनित
एक साइड नोट के रूप में, मैंने 800 मेगाहट्र्ज एंड्रॉइड डिवाइस पर रिमोट विधियों को कॉल के खिलाफ स्थानीय तरीकों से कॉल की तुलना में एक परीक्षण किया। एक साधारण 26 वर्ण स्ट्रिंग पैरामीटर के साथ रिमोट विधि को कॉल करने से स्थानीय विधि को कॉल करने से 400 नैनोसेकंड अधिक समय लगता है। एक 10,000 चरित्र स्ट्रिंग पैरामीटर भेजना 2.3 मिलीसेकंड लंबा लेता है। स्पष्ट रूप से अधिक डेटा भेजा जा रहा है (या प्राप्त) जितना अधिक समय लगेगा। – satur9nine
कुछ मैंने सीखा है: ContentProviders द्वारा पारित कर्सर में एक कर्सरविंडो होता है, कर्सरविंडो कर्सर 2 एमबी आकार का कैश क्षेत्र है, अधिकांश प्रश्न पूरे बफर में फिट होंगे। इस प्रकार कर्सर से डेटा तक पहुंचने से आम तौर पर एक बाइंडर विधि कॉल शुरू नहीं होता है क्योंकि सभी डेटा पहले से मौजूद हैं, हालांकि यदि आप कर्सर विन्डो के बाहर एक विशाल कर्सर में डेटा पढ़ने का प्रयास करते हैं तो विंडो को स्थानांतरित करने की आवश्यकता होगी और कैश पर असर होगा बांधने वाला – satur9nine