2012-02-02 16 views
9

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

मैं पर shouldRasterize संपत्ति के साथ प्रयोग कर रहा हूं। विशेष रूप से एक मामले में, मेरे पास UIView है जिसमें तालिका सहित कई सारे दृश्य शामिल हैं। एक संक्रमण के हिस्से के रूप में जहां पूरी स्क्रीन स्क्रॉल होती है, यह UIView भी स्केल और घुमाता है (ट्रांसफॉर्म का उपयोग करके)।

UIView की सामग्री स्थिर बनी हुई है, इसलिए मैंने सोचा कि view.layer.shouldRasterize = YES सेट करना समझ में आता है। हालांकि, मुझे प्रदर्शन में वृद्धि दिखाई नहीं दे रही थी। क्या यह हो सकता है कि यह नए पैमाने और घूर्णन पर हर फ्रेम को फिर से रास्टराइज कर रहा हो? मैं उम्मीद कर रहा था कि यह शुरुआत में रास्टराइज होगा जब इसकी पहचान मैट्रिक्स को पहचानती है, और तब कैश करें क्योंकि यह संक्रमण के दौरान स्केल और घुमाता है?

यदि नहीं, तो क्या ऐसा कोई तरीका है जिससे मैं इसे लागू कर सकता हूं? एक अनावश्यक अतिरिक्त सुपर-व्यू/परत जोड़ने से कम जो स्केल और इसके रास्टरराइज्ड सामग्री को घुमाता है ...

उत्तर

8

CoreAnimation instrument का उपयोग करके आप अपने आवेदन को प्रोफाइल करके अपने स्वयं के प्रश्न का उत्तर दे सकते हैं। ध्यान दें कि यह केवल एक डिवाइस में उपलब्ध है।

आप "ग्रीन और मिस रेड में रंग हिट" सक्षम कर सकते हैं। यदि आपकी परत लाल बनी हुई है तो इसका मतलब है कि यह वास्तव में हर फ्रेम को रास्टराइज कर रहा है।

+0

लाल होने का कारण क्या होगा? जीपीयू मेमोरी से बाहर चल रहा है? – jjxtra

+0

या तो, या परत को फिर से प्रस्तुत किया गया था और इसलिए कैश अवैध हो गया। – NachoSoto

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