类,静态方法或实例方法 - 编译语言中的内存消耗和可执行文件大小?

时间:2010-02-18 03:44:47

标签: java c++ flex memory-management performance

我一直想知道如何尝试提高我的Flex swfs的性能和大小,类和静态方法与实例方法如何影响性能和最终编译的“可执行文件”大小?思考如何将HAMLSass等内容应用于Flex ...

假设我正在构建一个包含大量组件和视图的非常大的管理界面,并且每个组件都应用了一个Skin对象(考虑Spark Skinning Architecture for Flex)。

现在我想为每个皮肤添加10种不同的效果(比如屏幕上有100个组件,因此1000个实例化效果)。是否更好:

  1. 让每个效果成为一个类(BlurEffect,GlowEffect ...),并将这些效果添加到皮肤。
  2. 在一个较大的类中将所有效果设为实例方法,例如“MultiEffect.as”,并将该类添加到皮肤,引用方式为multiEffect.glow()
  3. 在一个单独的“EffectManager.as”类中将所有效果设为静态方法,并通过EffectManager.glow(this)引用皮肤中的效果。
  4. 所以

    • 每个皮肤的多重效果类,vs。
    • 每个皮肤一个效果类,使用实例方法,vs。
    • 全局使用静态方法的一个效果类

    这些内容如何影响内存可执行文件大小(此示例中的swf大小)?我知道类是更好的OO实践,静态方法比实例方法慢,并且要避免使用单例,因此它不一定是性能。有关内存的更多信息(如果在某些情况下更小则更好)和文件大小。

1 个答案:

答案 0 :(得分:0)

无法找到Flex的这些信息,但对于Java(不应该太大),对象创建开销只有8个字节的内存。

这意味着如果我们讨论的是1000个实例,那么每个实例使用对象的开销最多为8K - 可以忽略不计。如果超过100倍,它仍然是800K仍然没有。

因此,回应之前的答案,选择能够为您提供更好设计的选项。

哦,结果文件大小的差异几乎没有。