Flex性能考虑因素

时间:2011-03-04 22:38:12

标签: flex performance flex3 flex4 air

为了提高Flex应用程序的性能,Flex开发人员应该记住哪些主要关键点? 我想到的是:

  1. 从更轻量级的基类扩展ItemRenderers:即UIComponent
  2. 将动画的suspendBackgroundProcessing设置为true
  3. 在适当的地方使用ArrayLists而不是ArrayCollections。
  4. Spark DataGroups中的useVirtualLayout(遗憾的是,此步骤需要滚动条使此建议生效)
  5. AIR应用程序的SQLight性能优化(事务等)
  6. 可能将长数据处理分成不同的帧? (虽然没有这样做,所以我可能会弄错)
  7. 在开发Flex3 / Flex4 / AIR应用程序时,您尝试遵循哪些关键准则以提高其性能?

4 个答案:

答案 0 :(得分:7)

在我看来,很多人都有使用itemRenderers的性能问题。所以,我在这里的贡献是永远不要使用绑定itemRenderer。我只是通过重写他们的itemRenderers来使用dataChange事件而不是绑定来解决许多客户“内存泄漏”错误。

除此之外,我第二次@Wade Mueller关于尽可能避免嵌套容器的评论。

答案 1 :(得分:6)

虽然对于较轻的Spark Group来说这不太重要,但我总是尽量将嵌套容器的数量保持在最小值,并尽可能设置明确的位置/大小。具有动态大小的容器的复杂UI彼此嵌套导致必须发生大量(通常不必要的)测量。在视图之间切换时,这通常会导致严重滞后。

答案 2 :(得分:6)

我的清单:

  • 尽可能使用本地变量而不是全局
  • ActionScript而不是MXML尽可能
  • [Bindable]生成大量代码,尽量避免使用

P.S。 Автор,атырусскийязыкзнаешь? :)

答案 3 :(得分:1)

我考虑的主要事项,按重要性排序:

  1. 结合

    • 创建大量额外代码,并且在未删除绑定时可能导致性能严重下降。例如,如果在应用程序中重用组件,则监听功能在整个应用程序流程中都处于活动状态,从而消耗不必要的内存和CPU周期。对于较大的应用程序,请考虑BindingUtils类。

    • 请注意,您无法解除绑定大括号{myVariable}

    • 的属性
  2. 验证(invalidate)调用是Flex中一些最昂贵的调用。使用时要小心。

    validateNow();

  3. 了解Flex component lifecycle。覆盖这些方法可以简化实例化过程。

  4. 使用Vector对象。 More information

  5. Ints>数字。 Excellent SO answer
  6. 一些更基本的提示:

    1. 不要在循环中使用昂贵的操作。

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

      massiveArray的情况下,一个非常大的数组,length()可能是一个昂贵的操作。分配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. 如果您有权访问它,Flash Profile透视图就是您的朋友。它是一个功能强大的分析器,可以减少优化代码库所需的时间。