1

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

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

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

4

1 回答 1

1

实例化 Typhoon 的“Assembly”风格设计用于以下用途:

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

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

自动接线:

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

收藏扫描:

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

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

这允许一个简单而直观的 DSL,但需要扫描每个集合值,这会增加开销。你的程序集中有很多集合吗?

台风 3.0:

作为Typhoon 3.0 版本的一部分,我们将进行一些分析。同时,如果您有任何表现,可能会提出 Github 问题,我们将尝试解决它们。

最小台风(一般情况下不推荐):

关于性能的最后一点:除了使用 Typhoon 的组装方式之外,如果启动性能特别受关注,您可以通过TyphoonComponentFactory直接使用以裸/最小状态使用 Typhoon,但是这更加冗长并且没有内置-in IDE 重构、代码完成、使用汇编接口解析组件的能力(使用我们的没有运行时参数)等。

于 2014-11-15T03:02:45.923 回答