【问题标题】:What makes Appcelerator Titanium project compilation time so long?是什么让 Appcelerator Titanium 项目编译时间如此之长?
【发布时间】:2016-01-17 04:51:38
【问题描述】:

我已经开始了一个新项目,并测量了从我点击播放开始编译到我在 iPhone 模拟器上看到它的时间(模拟器已经打开 - 所以没有计算启动它所需的时间)。

第一次编译需要 1:56 分钟。由于这是第一次,我猜它会做一些未来编译不会做的事情,所以我再试一次,这次编译时间缩短到 1:15 分钟。

任何了解我并关注我帖子的人都知道,我喜欢在很多方面比较平台。所以我做了。我与街区里的新手——ReactNative 进行了比较。 React 初始编译耗时 32 秒。第二次编译耗时 10 秒。

值得一提的是,ReactNative 项目是从 xCode 运行的,而 Titanium 脚本会进行预构建。但是,如果查看 react xCode 项目和 Titnaium xCode 项目,您会发现 Titanium 在项目中有更多“包袱”。

我知道我可以使用 LiveView - 但这并不总是您想要或需要的。

编译时间对开发过程很重要。所以我想知道为什么 Titanium 编译需要这么长时间,是否有任何方法可以缩短该时间(显着)?

【问题讨论】:

    标签: appcelerator appcelerator-titanium appcelerator-studio


    【解决方案1】:

    如果您现在认为它很慢,那么您应该以前看过它。 :)

    每次构建应用时都会发生很多事情。我已经优化了大部分构建过程,但我可以做很多事情来加快构建过程的逻辑。

    每次您构建时,我们都必须验证您的会话,我们必须扫描所有 Xcode、iOS 模拟器等,我们必须检查大约 30 项内容以确定我们是否需要强制重新构建,等等。另外,如果您有一个 Alloy 应用程序,则构建必须触发 Alloy 编译器。根据应用的类型,我们会解析您所有代码的 AST 多达 3 次。

    我们可以做很多事情来加快速度。我们可以缓存很多东西。我们可以内联很多子处理。有很多不必要的磁盘 I/O。有很多不必要的 AST 解析。

    好消息是我正在积极改进这一点。构建将变得越来越快。

    【讨论】:

    • 我以前见过。它肯定有所改善!问题:在编写合金项目和使用 liveview 时,合金转译器是否也会在每次保存时运行?
    • @developer82 是的,我相信是这样,但不要引用我的话。我已经很久没有玩 LiveView 了,而且我主要使用经典的 Titanium 应用程序进行测试。
    • @ChrisBarber 我问的原因是因为 LiveView 似乎渲染得非常快。也许在进行调试编译时可以利用它 - 以及在发布时进行“完整”编译 - 当然我不知道它是如何工作的,而且可能是错误的......但只是一个想法。
    • 是的,Alloy 对每次更改都会进行完整编译。 Alloy 也可以编译特定文件,但 LiveView 尚未更新以利用这一点:jira.appcelerator.org/browse/TIMOB-18597
    【解决方案2】:

    Titanium 在第一次构建或更改为 tiapp.xml 后需要更长的时间。在这种情况下,我们完全重建 Xcode 项目。事实上,在 ReactNative 的情况下,Xcode 项目就在那里,但这也意味着您必须自己管理 Xcode 设置。

    接下来的每次编译都应该是几秒钟。 Alloy 项目需要更长的时间,因为 atm 它仍然编译完整的 Alloy 项目。这也应该在下一个版本中成为增量。

    请检查您的日志。它应该在某个时候报告它是否正在进行完全重建以及为什么。

    【讨论】:

    • 谢谢。有什么技巧可以加快速度吗?
    • 好吧,就像我问的那样 - 你能检查一下你的日志,看看它实际上不应该进行完全重建的原因吗?
    【解决方案3】:

    根据您的项目,“空”项目的 1 分钟非常长。并且在不更改任何代码的情况下重新编译应该不会花费那么长时间(在我的例子中是几秒钟)。

    您使用哪个 SDK 版本进行测试?有一个可能相关的错误 (https://jira.appcelerator.org/browse/ALOY-1340 "Alloy 选择性编译从 ALOY-1332 ")。

    你是用 Appc Studio 还是命令行工具编译?

    看看这篇旧文章: http://jolicode.com/blog/alloy-selective-compilation-for-an-even-faster-titanium-development-process 他们也对编译时间进行了一些测试。

    【讨论】:

    • 我正在使用 SDK 5.2.x - 但情况总是如此(甚至在尝试该版本之前)。我正在从 Appcelerator Studio 编译。
    猜你喜欢
    • 2010-09-29
    • 1970-01-01
    • 1970-01-01
    • 2012-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多