संक्षिप्त उत्तर: संभवतः जब तक आप एक प्रदर्शन समस्या नहीं देखते हैं तब तक केवल कैलियर के कोने के साथ रहें।
लांग जवाब:
हम पहले "ड्राइंग" और "संयोजन" के बीच अंतर करने की जरूरत है।
आईओएस पर चित्रण पिक्सल (एक सीपीयू सीमित कार्य) के साथ बनावट भरने का सरल कार्य है। कंपोजिटिंग उन सभी बनावटों को स्क्रीन पर प्रिंट करने के लिए एक ही फ्रेम में फ़्लैटन करने का कार्य है (एक जीपीयू सीमित कार्य)। आम तौर पर, जब आप स्क्रॉलिंग या एनिमेटिंग करते हैं तो आप ज्यादातर जीपीयू पर कर लगा रहे हैं, जो कि सभी पिक्सल को एक-एक करके स्थानांतरित करने जैसी चीजें हैं, जीपीयू नाश्ते के लिए खाती है।
-DrawRect: शुद्ध ड्राइंग है, और बनावट को भरने के लिए CPU का उपयोग करता है। कैलियर के कोने त्रिज्या कंपोजिटिंग चरण पर किया जाता है, और जीपीयू पर जोर देता है।
का उपयोग-ड्राउरटेक्ट का उपयोग करना: बहुत अधिक प्रारंभिक लागत (यह आसानी से एक फ्रेम से अधिक समय ले सकती है) और गैर-मामूली स्मृति उपयोग है, लेकिन इसके बाद बहुत आसानी से स्क्रॉल करता है (यह अब किसी अन्य बनावट की तरह एक बनावट है)। कैलायर के कोने त्रिज्या का उपयोग करना हार्दिक रूप से तेजी से कोने त्रिज्या के साथ दृश्यों का एक गुच्छा बनाने के लिए तेज़ है, लेकिन एक बार जब आप उनमें से एक दर्जन से अधिक प्राप्त करते हैं तो आप स्क्रॉलिंग गति के लिए अलविदा कह सकते हैं (क्योंकि GPU को केवल सामान्य स्क्रॉलिंग कर्तव्यों को नहीं करना है बल्कि उसे भी कोने त्रिज्या को अपने दृश्य पर वापस रखें)।
लेकिन इसके लिए मेरा शब्द न लें, कुछ गणित करें। मैंने Florian Kugler’s benchmark को अनुकूलित किया और आईओएस 4 एस चल रहा आईओएस 6.1.3 पर चलाया। मैं मापता हूं कि शुरुआत में एक सेकंड के 1/60 वें में कितने विचार बनाए जा सकते हैं, फिर फ्रेम दर 60fps से नीचे गिरने से पहले कितने विचार एनिमेटेड किए जा सकते हैं। दूसरे शब्दों में: अग्रिम लागत बनाम फ्रेमरेट लागत।
| -drawRect: | CALayer’s cornerRadus
max number of views rendered in 16.6ms | 5 views | 110 views
max number of views animating at 60fps | ~400 views | 12 views
(ध्यान दें कि एप्लिकेशन 500 -drawRect पर बहुत अधिक स्मृति का उपयोग करने के लिए मार दिया जाता है: विचार)
दिन के अंत में, मेरे अपने परियोजनाओं में मैं CALayer के cornerRadius के रूप में ज्यादा छड़ी के लिए करते हैं यथासंभव। मुझे गोल कोनों और-ड्राउरक्ट के साथ कुछ विचारों की शायद ही कभी आवश्यकता है: प्रारंभिक प्रदर्शन हिट में बहुत अधिक है। और कोनों के चारों ओर देखने के लिए एक दृश्य subclassing बस, उह है।
कोई फर्क नहीं पड़ता कि आप किस विधि को चुनते हैं, सुनिश्चित करें कि आप मापते हैं और ध्यान देते हैं कि आपका ऐप कितना आसान और उत्तरदायी है, और तदनुसार जवाब दें।
आईडी इसे खुद को जानना पसंद है। –
IMHO हार्डवेयर में ड्राइंग होता है, drawRect डिस्प्ले सूचियां बनाता है, जो हार्डवेयर को पास कर दिए जाते हैं और – AlexWien