2011-03-04 30 views
13

फ्लेक्स अनुप्रयोगों के प्रदर्शन को बेहतर बनाने के लिए फ्लेक्स डेवलपर को मुख्य कुंजी-बिंदु क्या याद रखना चाहिए? हैं, जो मेरे मन के लिए आते हैं कर रहे हैं: अधिक हल्के आधार वर्ग सेफ्लेक्स प्रदर्शन विचार

  1. विस्तार ItemRenderers: अर्थात UIComponent
  2. suspendBackgroundProcessing का उपयोग कर एनिमेशन
  3. बजाय ArrayLists का उपयोग कर ArrayCollections की जहां उपयुक्त हो के लिए सही पर सेट किया। स्पार्क DataGroups में
  4. useVirtualLayout
  5. आकाशवाणी क्षुधा (लेन-देन आदि) अलग फ्रेम में
  6. शायद बंटवारे लंबे डाटा प्रोसेसिंग के लिए SQLight प्रदर्शन अनुकूलन (दुर्भाग्य से इस कदम के इस सलाह प्रभावी बनाने के लिए scrollers की आवश्यकता है)? (कभी हालांकि इस किया है, इसलिए मैं गलत हो सकता है)

कुंजी दिशानिर्देश आपको जबकि क्रम में उनके प्रदर्शन को बढ़ाने के लिए अपने Flex3/Flex4/आकाशवाणी अनुप्रयोगों के विकास के पालन करने की कोशिश क्या हैं?

उत्तर

6

हालांकि यह हल्का वजन स्पार्क समूह के साथ कम महत्वपूर्ण है, लेकिन मैं हमेशा नेस्टेड कंटेनरों की संख्या को न्यूनतम रखने की कोशिश करता हूं और जब संभव हो तो स्पष्ट स्थिति/आकार निर्धारित करता हूं। गतिशील रूप से आकार वाले कंटेनरों के साथ जटिल यूआई एक दूसरे के भीतर घोंसले होते हैं क्योंकि एक टन (आमतौर पर अनावश्यक) होता है जो मापने के लिए होता है। विचारों के बीच स्विच करते समय अक्सर यह भारी झटके में पड़ता है।

+0

अच्छा लगता है, मैं अपने marko

6

मेरी सूची:

  • उपयोग स्थानीय बजाय वार्स वैश्विक तक संभव हो,
  • MXML के बजाय ActionScript तक संभव हो,
  • [Bindable] कोड की टन उत्पन्न करता है, यह
  • से बचने की कोशिश

पीएस Автор, а ты русский язык знаешь? :)

+1

ага ......... :) –

+1

ты откуда будешь? – Tuco

+0

Лол, ребята! :) –

7

ऐसा लगता है कि बहुत से लोगों के पास प्रदर्शन समस्याएं हैं w/itemRenderers। तो, मेरा एक योगदान यहां किसी आइटम रेंडरर को बाध्य करने का उपयोग करने के लिए नहीं है। मैं अपने ग्राहक को फिर से लिखकर बहुत सारे ग्राहक "मेमोरी लीक" बग को ठीक करता हूं, डेटा का उपयोग करने के लिए प्रस्तुतकर्ताओं को बाध्यकारी के बजाए बदलें बदलें।

इसके अलावा, मैं नेस्टेड कंटेनर से जितना संभव हो सके से बचने के बारे में @Wade Mueller की टिप्पणी को दूसरी बार।

+0

जब आप कहते हैं कि आप आइटम को फिर से लिखते हैं तो डेटा का उपयोग करने के लिए डेटारेंडर बाध्यकारी के बजाय डेटा बदलें घटना? क्या आपका मतलब है कि डेटा डेटा विधि को ओवरराइड करें और आइटम के भीतर मूल्यों को असाइन करने के बजाय मूल्यों को असाइन करें, प्रस्तुतकर्ता घटक अलग-अलग हैं? –

+0

@ जेसन टाउन आइटम विक्रेता में, डेटा परिवर्तन ईवेंट (http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/events/FlexEvent.html#DATA_CHANGE) में एक ईवेंट श्रोता जोड़ें और असाइन करें घटना हैंडलर में मूल्य। यह सेट डेटा विधि को ओवरराइड करने से थोड़ा अलग है; लेकिन वैल असाइन करने की अवधारणा एक ही तरह से है। सेट डेटा विधि को ओवरराइड करने के बजाय डेटा बदलें ईवेंट सुनने के लिए मेरी प्राथमिकता है; लेकिन मेरे पास दूसरे पर एक दृष्टिकोण चुनने का कोई अच्छा कारण नहीं है। स्पष्टीकरण के लिए – JeffryHouser

+0

धन्यवाद। यह समझ आता है। –

1

मुख्य बातों मैं विचार, महत्व के क्रम में:

    • बाइंडिंग अतिरिक्त कोड का एक बहुत बनाता है और प्रदर्शन में एक गंभीर कमी का कारण हो सकता है जब बाइंडिंग नहीं निकाले जाते । उदाहरण के लिए, यदि आप किसी अनुप्रयोग में घटकों का पुन: उपयोग करते हैं, तो सुनने के कार्य आपके एप्लिकेशन के पूरे प्रवाह में सक्रिय होते हैं, अनावश्यक स्मृति और सीपीयू चक्र का उपभोग करते हैं। बड़े अनुप्रयोगों के लिए BindingUtils कक्षा पर विचार करें।

    • ध्यान दें कि आप नहीं अनबाइंड गुण घुंघराले ब्रेसिज़ {myVariable}

  1. मान्य (अमान्य) कॉल के साथ बाध्य कर सकते हैं फ्लेक्स में सबसे महंगी कॉल से कुछ हैं। उनका उपयोग करते समय सावधान रहें।

    validateNow();

  2. फ्लेक्स component lifecycle समझे। इन विधियों को ओवरराइड करने से तत्काल प्रक्रिया को व्यवस्थित किया जा सकता है।

  3. वेक्टर ऑब्जेक्ट्स का उपयोग करें। More information

  4. इन्ट्स> संख्याएं। Excellent SO answer

कुछ और बुनियादी युक्तियाँ:

  1. छोरों में महंगा संचालन प्रयोग न करें।

    for(var i:int = 0; i < massiveArray.length; i++) 
    

    massiveArray के मामले में, एक बहुत बड़ी सरणी की लंबाई() एक महंगी आपरेशन हो सकता है। प्रदर्शन में सुधार के लिए var massiveArrayLength:int = massiveArray.length; असाइन करें।

  2. http://jacksondunstan.com/ आपके कोड को अनुकूलित करने के लिए लेखों का एक धन है। पुरुष असली है।

  3. अनावश्यक चर बनाने से बचें, क्योंकि तत्काल महंगा है। यदि संभव हो तो हमेशा चर का पुन: उपयोग करें।

    function getComplexValue():int { 
        var i:int = complexCalculation(); // returns int after calculating 
        return i; 
    } 
    

    इसके बजाय, बस तुरंत लौटें।

    function getComplexValue():int { 
        return complexCalculation(); 
    } 
    
  4. यदि आपके पास इसका उपयोग है, तो फ्लैश प्रोफाइल परिप्रेक्ष्य आपका मित्र है। यह एक शक्तिशाली प्रोफाइलर है जो कोडबेस को अनुकूलित करने में शामिल समय को कम कर सकता है।

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

  • कोई संबंधित समस्या नहीं^_^