使用大量豆类更快地初始化台风工厂

时间:2014-11-14 16:10:58

标签: ios objective-c iphone performance typhoon

在我的4个Typhoon程序集中,我实际上有大约150个组件。我在应用启动时使用这些程序集初始化TyphoonComponentFactory,并且可能很长,具体取决于组件数量和标记iDevice。

例如,组件工厂初始化在iPhone4上大约需要1200ms,在iPhone 5S上需要600ms。

有没有办法加快组件工厂的初始化?

1 个答案:

答案 0 :(得分:1)

'组装'实例化台风的风格设计如下:

  • 在初始化时发生主要性能损失,并在运行时尽可能快。
  • 提供尽可能多的便利和易用性。

自分析以来已经有一段时间了,但我猜这两个性能损失最大的功能是:

自动布线:

有一个新的自动接线功能将作为Typhoon 3.0的一部分发布。虽然仍然是私有的,但它位于主分支上,并存在于某些Typhoon 2.3.x版本中。它增加了25%的开销。昨天推出了一项功能,允许关闭自动接线。

收集扫描:

Typhoon对集合(NSArrays,Sets等)具有以下行为:

  • 对其他组件的任何引用都将导致注入内置组件。
  • 否则将按原样注入普通对象,配置和标量值。 。虽然此功能可能会对性能产生影响,但在典型的程序集中,没有那么多集合可以产生任何明显的效果。

这允许简单直观的DSL,但需要扫描每个集合值,这增加了开销。你的装配中有很多系列吗?

Typhoon 3.0:

我们将在 Typhoon 3.0发布中进行一些分析。与此同时,如果您有任何表现可能会引发Github问题,我们会尝试解决这些问题。

最小的台风(不推荐用于正常情况):

作为性能的最后一点:除了使用Typhoon的装配风格外,如果启动性能特别受关注,你可以直接使用TyphoonComponentFactory以极小/最小状态使用Typhoon,但这更多verbose并没有内置的IDE重构,代码完成,使用汇编接口解析组件的能力(我们没有运行时args)等。