【发布时间】:2011-01-18 04:10:34
【问题描述】:
我一直想知道如何尝试提高我的 Flex swf 的性能和大小,类、静态方法和实例方法如何影响性能和最终编译的“可执行文件”大小?思考如何将 HAML 和 Sass 之类的东西应用到 Flex...
假设我正在构建一个包含大量组件和视图的非常大的管理界面,并且每个组件都应用了一个 Skin 对象(想想Spark Skinning Architecture for Flex)。
现在我想为每个皮肤添加 10 种不同的效果(假设屏幕上有 100 个组件,所以这是 1000 个实例化效果)。是否更好:
- 让每个效果都成为一个类(BlurEffect、GlowEffect...),并将这 10 个添加到皮肤中。
- 让所有效果都实例方法在一个更大的类中,比如“MultiEffect.as”,然后将该类添加到皮肤中,引用如
multiEffect.glow()。 - 将所有效果都静态方法放在一个单例“EffectManager.as”类中,并通过
EffectManager.glow(this)引用皮肤中的效果。
所以
- 每个皮肤有多个效果类,对比
- 每个皮肤一个效果类,带有实例方法,与
- 一个全局效果类,带有静态方法
这些因素如何影响内存和可执行文件大小(本例中为 swf 大小)?我知道类是更好的 OO 实践,并且静态方法比实例方法慢,并且要避免使用单例,因此这不一定与 性能 有关。更多关于内存(在某些情况下如果更小会更好)和文件大小。
【问题讨论】:
-
如果这是一个管理界面,为什么它需要所有这些华丽的模糊效果和发光效果之类的,它们真的只会让整个东西渲染得非常慢?
-
静态方法并不比实例方法慢,反而更快。
-
我认为这属于过早优化的范畴。在考虑遵循哪种设计范式时,运行时速度和内存不应成为问题。正确执行的过程和 OO 方法在速度和内存占用方面非常相似。
-
问题中使用的道具简化了对基本问题的描述:这 3 种不同实现的幕后发生了什么。还没有找到合适的答案。
标签: java c++ apache-flex memory-management performance