के साथ छवि लोडिंग प्रदर्शन समस्याएं मेरे पास एक जीटीके (गोब्जेक्ट) इंटरफेस के साथ एक स्क्रिप्ट है जिसका उपयोग मैं अपने फोटो ब्लॉग पर पोस्ट करने के लिए करता हूं।पाइथन और गोबजेक्ट
मैं पृष्ठभूमि थ्रेड में छवियों को लोड करके इसकी प्रतिक्रिया में सुधार करने की कोशिश कर रहा हूं।
मुझे पृष्ठभूमि थ्रेड से GdkPixbuf ऑब्जेक्ट्स को पॉप्युलेट करने की कोशिश करने की कोई किस्मत नहीं है, मैंने जो कुछ भी कोशिश की है, वह सिर्फ जम्मू ठोस है।
तो एक वैकल्पिक के रूप में मैंने सोचा कि मैं पृष्ठभूमि धागे में फ़ाइलों को पढ़ूंगा और फिर उन्हें GdkPixbuf की मांग पर धक्का दूंगा। इस दृष्टिकोण ने कुछ आश्चर्यजनक और निराशाजनक प्रदर्शन परिणामों को जन्म दिया है जो मुझे आश्चर्यचकित करते हैं कि मैं कुछ गलत कर रहा हूं।
मैं अपने कैमरे से हल्के से संकुचित जेपीईजी के साथ खेल रहा हूं, वे लगभग 3.8 एमबी होते हैं।
यहाँ मूल अवरुद्ध छवि लोड है:
pb = GdkPixbuf.Pixbuf.new_from_file(image_file)
यह औसत के बारे में 550ms, विशाल, बल्कि थकाऊ यदि आप एक दर्जन से अधिक चित्रों के माध्यम से झटका करना चाहते हैं।
तो मैं उसे विभाजित करें, यहाँ फ़ाइल को पढ़ने के लिए:
data = bytearray(open(self.image_file).read())
यह औसत 15ms, कि, वास्तव में अच्छा, लेकिन यह भी थोड़े चिंता है कि अगर हम 15ms में फ़ाइल पढ़ सकते हैं अन्य 535ms खर्च किया जा रहा हैं क्या पर?
संयोग से बाइटियर कॉल मौजूद है क्योंकि PixBufLoader अन्यथा डेटा स्वीकार नहीं करेगा।
और फिर जरूर लोड:
pbl = GdkPixbuf.PixbufLoader()
pbl.write(data, len(data))
pbl.close()
pb = pbl.get_pixbuf()
1400ms के आसपास यह औसत है, जो लगभग 3 बार जीटीके यह सब करने दे अधिक लंबी है।
क्या मैं यहां कुछ गलत कर रहा हूं?
आप अजगर रूपरेखा उपकरण का उपयोग कर देखने के लिए जहां समय खर्च किया जाता है माना जाता है:
यहाँ स्रोत है? –
पिक्सबफलोडर क्लोज कॉल वर्तमान में मेरे रनटाइम का 9 4% है, मुझे उस कॉल के अंदर कोई विवरण नहीं मिलता है। –