2九2009
Filed under: Flex, Techniques Optimization
Author: Alvin / Aedis.Ju 将文章转换为简体
關于程式效能優化的文章,我前面介紹過2篇,都是值得一看:
近日在 InsideRIA 發表了新的一篇 10 Tips for Flex Application Performance ,是我非常敬仰的大師 Andrew Trice 所寫,程式效能優化雖然老生常談,但畢竟大師的作品是不應該落下的,因此拉出來跟大家一起品味一下。
原文就自己看了,我稍微用中文總結一下 Andrew Trice 所述的其中 6 點。
- Manage your event listeners
要經常 remove 不需要的 event listeners。
定義 event listeners 的時候,注意 target 和 parent 的關系。
設置好 Event 的 bubbles & cancelable。
addEventListener 中的 useCapture, priority, useWeakReference。
- Unload loaders
如果使用的 Component 是基于 loader 的,諸如 SWFLoader, Image等等,要使用 unloadAndStop()。
unloadAndStop(),這個是 flashplayer 10 后才有的,flashplayer 9 的 unload()并不能真正回收,應該也屬于 bug 的范疇。
關于 unloadAndStop() ,大家可以參考下面的2篇文章作大致的了解:
Flash Player 10 unloadAndStop 測試
FlashPlayer10的Loader.unloadAndStop
- Dispose of things
在做 dispose() 的時候,把一切該混滅得都毀滅吧。
- Handle collections properly
去了解 ICollectionView 的 enableAutoUpdate () & disableAutoUpdate () ,這一點對寫 Component 的同學特別重要。
如果沒有使用 data binding,盡量使用 Array。
在 sort & filterFunction 后是否立即要使用 refresh() 需要注意畫面的實際情況。
- Use deferred instantiation
這一點需要大家去了解 Flex Component 的 lifeCycle 。
在使用tab,nav, accordion, viewstack等控件的時候,Flex 用 creationPolicy 來進行對子對象創建的策略。默認情況下,tab,nav, accordion, viewstack等的子控件都沒有完全生成,而是在比如點擊第二頁的時候,他會去生成第二個子控件里面的內容。
因此,對 Flex Component 而言,不要把生成子對象寫在 Constructor 里面,要記得去 override createChildren()。
- Object recycling vs new objects
Reduce, Reuse, Recycle 就是最大的概況。
- Don’t invalidate/destroy/re-validate your objects if nothing changed
- Dynamic/Generic vs. Typed Objects
- Use constants when applicable
- Use static members
Related posts:
- SEO For Flex/Flash
- Why we need talk about the SEO for Flex/Flash?
- 2009 Adobe Flash / Adobe Flex 重點留意關鍵字
- Adobe Flex LifeCycle
- Replace Flex 4 State Names
Leave a reply