2011-07-20 14 views
6

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

  • मैं एक 'डैशबोर्ड' लिखा है कि नष्ट हो जाता है और फिर से बनाया है जब एक TreeWidget में किसी आइटम पर एक उपयोगकर्ता क्लिक करता है: मैं जहाँ मेरे कार्यक्रम धीमा करने के लिए के रूप में यह बड़ा बढ़ता है शुरू होता है के कुछ उदाहरण है। मॉड्यूलर इंटरफ़ेस रखने का एक बेहतर तरीका क्या होगा जहां TreeWidget में किसी आइटम पर क्लिक करने से डैशबोर्ड बदल जाता है, लेकिन उसे विजेट को नष्ट करने और उसे पुन: बनाने की आवश्यकता नहीं होती है।

  • प्रत्येक डैशबोर्ड भी नेटवर्क स्थान से एक छवि लोड करता है। इससे कुछ मंदी पैदा होती है क्योंकि एप्लिकेशन के चारों ओर एक नेविगेट होता है, लेकिन इसे स्मृति में लोड करने के बाद, 'उसी डैश पर वापस जाना' तेज होता है। प्रोग्राम लोड पर थ्रेड चलाने के लिए कोई अच्छी विधि या तरीका है जो शायद छवियों को स्मृति में पूर्व लोड करता है? यदि हां, तो आप इसे कैसे लागू करते हैं?

  • जब आपके पास बड़ी मात्रा में डैशबोर्ड आइटम और डेटा लोड हो जाता है, तो क्या आप लोग सामान्य रूप से डेटा लोड को थ्रेड करते हैं और इसे वापस लोड करते हैं जिसमें प्रत्येक थ्रेड पूरा होता है? क्या यह व्यवहार्य है जब कोई जल्दी से ब्राउज़ कर रहा है? धागे के लिए एक हत्या-स्विच लागू करना होगा जैसे कि जब कोई उपयोगकर्ता डैशबोर्ड बदलता है, तो धागे काम करते हैं? या निरंतर सृजन और धागे की हत्या कुछ प्रकार के, अच्छी तरह से, मंदी का कारण बनती है।

प्रश्नों के विशाल बंधन के लिए खेद है, लेकिन वे एक साथ बंडल करने के लिए वारंट के लिए पर्याप्त लग रहे थे।

उत्तर

7

मुझे यकीन नहीं है कि यह वही काम है जो आप कर रहे हैं, लेकिन यह कुछ ऐप्स में मेरे जैसा कुछ है, जहां कस्टम विजेट की कुछ सूची है। और जब आप कई विजेट बना रहे हैं और नष्ट कर रहे हैं तो यह काफी धीमा हो जाता है।

यदि यह कुल विजेट की कम मात्रा का मुद्दा है, लेकिन केवल बनाया और हटा दिया गया है, तो आप केवल एक बार विजेट बना सकते हैं, और केवल उन विजेट्स का डेटा बदल सकते हैं क्योंकि जानकारी को अद्यतन करने की आवश्यकता है ... प्रत्येक बार जब सूचना बदलती है तो नए विजेट बनाने का विरोध किया जाता है। इस तरह आप विजेट बनाने के बारे में चिंता किए बिना थ्रेड से डेटा भी बदल सकते हैं।

एक और स्थिति यह है कि आप कस्टम विजेट के साथ एक सूची प्रदर्शित कर रहे हैं और परिणाम के एक टन हैं। मुझे लगता है कि जब आपके पास सूची में 1000 कस्टम विजेट हैं तो यह हमेशा धीमा हो जाता है। मेरे सह-कार्यकर्ता के साथ एक नकली नकली सूची थी जहां यह प्रदर्शन में स्लॉट की स्थिर संख्या का उपयोग कर रहा था। कहें, यह दृश्य में 10 स्लॉट दिखाता है। स्क्रॉलबार वास्तव में अधिक विजेट पर स्क्रॉल नहीं करता है ... यह 10 दृश्य विगेट्स के माध्यम से डेटा को स्क्रॉल करता है। आप एक पागल प्रदर्शन कर सकते हैं कि कर रहे हैं। लेकिन केवल तभी जब यह आपके आवेदन के लिए एक स्वीकार्य प्रदर्शन शैली है।

+0

एक नेक्रो का बिट, लेकिन यह वह तरीका है जिस पर मैं घायल हो रहा हूं। उत्तर स्वीकार किया गया! – Cryptite

1

क्या आप छवियों को लोड करने के लिए QNetworkAccessManager का उपयोग कर रहे हैं? इसमें कैश समर्थन है। इसके अलावा यह कॉलबैक खत्म करने के साथ पृष्ठभूमि में सबकुछ लोड करता है।

मुझे वास्तव में समझ में नहीं आता कि आपका डैशबोर्ड क्या कर रहा है। क्या आप QWebkit का उपयोग करने के बारे में सोचते हैं? हो सकता है कि आपकी डैशबोर्ड सामग्री HTML में लागू की जा सके?

पीएस। मुझे पायथन में धागे पसंद नहीं हैं और ऐसा नहीं लगता कि वे अच्छे विचार हैं। क्यूटी कोर को दी गई स्थगित नौकरियां बेहतर हैं।

+1

डिफर्ड नौकरियों की तुलना में पाइथन में धागे के खिलाफ विपक्ष क्या हैं? – Remi

+0

कुल मिलाकर मैं अभी भी PyQt के गहरे पहलुओं के लिए बिल्कुल नया हूं। मेरा आवेदन एक डेस्कटॉप है, तो क्यूएनएएम और क्यूवेबकिट लागू होगा?मान लीजिए कि मैं शुरू करने के लिए छवियों को प्री-लोड करने का तरीका जानने का प्रयास कर रहा हूं और फिर किसी छवि को लोड नहीं होने पर किसी प्रकार के संघर्ष से परहेज करते समय कॉल करने के लिए लाइब्रेरी है। मैं सिर्फ विभिन्न प्रकार के विगेट्स के साथ QWidget का वर्णन करने के लिए 'डैशबोर्ड' शब्द का उपयोग कर रहा हूं, जैसे छवियों के साथ आबादी वाले QLabels और साथ ही साथ कई लेबल जिनके डेटा को XML दस्तावेज़ से लोड किया गया है। – Cryptite

+0

यदि आपकी छवियों को केवल शुरुआत में लोड होने की आवश्यकता है तो आप इनिट के दौरान एक बार शब्दकोश में सभी QPixmaps बना सकते हैं। फिर यह विजेट में उन्हें स्वैप करने के लिए थ्रेड-सुरक्षित है। आप उन्हें थ्रेड से नहीं बना सकते हैं। – jdi

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