नए रिलीज आईओएस 5.0 एसडीके पर हमारे आईफोन एप्लिकेशन को फिर से सम्मिलित करने के बाद मुझे अजीब समस्या का सामना करना पड़ा - सभी यूआईएममेज: छवि नामांकित (वास्तविक छवि लोडिंग के साथ पहली बार कॉल करें) और यूआईएममेज: imageWithContentsOfFile 10 काम करना शुरू कर दिया पहले से धीमा समय। मैं समस्या को कम करने में कामयाब रहा: यह केवल जेपीईजी और पीएनजी फाइलों के लिए मामला है (gifs नहीं!) और यह फ़ाइल आकार की वजह से नहीं है। छोटे 32 * 32 पीएनजी की सीधी लोडिंग लगभग 300 एमएमएस लेती है ... पुराने उपकरणों पर 30 एमएमएस की तुलना में (3.1 और 4.3.5 पर सटीक उसी कोड के साथ चेक किया गया)UIImage: imageWithContentsOfFile आईओएस 5.0 में 10 गुना धीमा है
मैंने नए पेश किए गए सीआईएममेज के माध्यम से छवि लोड करने का भी प्रयास किया इस कोड को
WLLog(@"Data loading...");
NSData *imageData = [NSData dataWithContentsOfFile:path];
WLLog(@"CIImage creation...");
CIImage* cii = [CIImage imageWithData:imageData];
WLLog(@"CIImage creation ok...");
float scle = 1.0;
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 40000
if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) {
scle = [[UIScreen mainScreen] scale];
}
#endif
CIContext *context = [CIContext contextWithOptions:nil];
UIImage* res5 = [[UIImage alloc] init];
WLLog(@"UIImage creation...");
[res5 initWithCGImage:[context createCGImage:cii fromRect:cii.extent] scale:scle orientation:UIImageOrientationUp];
WLLog(@"Done!");
किसी भी भाग्य के बिना
... इस एक पंक्ति
CIImage* cii = [CIImage imageWithData:imageData];
यहां तक कि छोटे छवियों (4KB png) पर एक ही 300 मि.से लेता है। इमो, बिल्कुल पार्स करने के लिए कुछ भी आसान नहीं है!
क्या लोडिंग समय में इस तरह के अजीब बदलाव को हल करने के लिए कुछ भी है? फिलहाल ऐसा लगता है कि एसडीके आंतरिक में कुछ बदल गया है :(
धन्यवाद, मैं निश्चित रूप से इसे आज़मा दूंगा और अगर यह मदद करता है तो यहां पोस्ट करें। वैसे भी मेरे लिए एक बग जैसा लगता है (नई रिलीज 5.0.1 के साथ चीजें बेहतर नहीं हैं) और मैं इसे जल्द ही ऐप्पल में फाइल करूंगा – IPv6
तो, क्या आपने अभी तक कोशिश की है?क्या यह आपके साथ भी काम करता है? - मैंने कुछ और परीक्षण किए हैं जो पुष्टि करते हैं कि इसे डिस्क से पीएनजी पढ़ने के साथ करना था। असल में, एक और समय प्रोफाइलर ट्रेस द्वारा निर्णय लिया गया कि मैंने पीएनजी के लिए मेटाडेटा क्लास बनाते समय आईओएस 5 द्वारा समय का सबसे बड़ा हिस्सा खो दिया है। – Martin
शानदार! हाँ, यह बहुत मदद करता है, धन्यवाद! और आप सही हैं - ऐसा लगता है जैसे मेटाडाटा इस पागलपन (जेपीईजी और पीएनजी दोनों के लिए) के लिए ज़िम्मेदार है। मेटाडाटा सक्षम किए बिना सभी पीएनजी और जेपीईएस को फिर से सहेजने के बाद सभी सामान्य रूप से काम करना शुरू कर दिया - छवियां 30ms में लोड हो रही हैं। ऐसा लगता है कि प्री-5.0 आईओएस एसडीके ने किसी भी पीएनजी/जेपीईजी मेटाडाटा – IPv6