我在 Mac 上运行 Flex Builder 3,随着项目的增长 - 编译时间越来越长。我正在使用一些 SWC,并且有相当多的代码,但是每天构建和崩溃应该不需要几分钟吗?
14 回答
首先,评论一些回应:
无需在 Flex Builder 中显式指定 -incremental,因为它默认使用增量编译。
-keep-generated-actionscript 是一个性能杀手,因为它指示编译器在编译过程中写出为 MXML 组件生成的 AS3 代码。编译过程中的文件 I/O 意味着不必要的暂停和低 CPU 使用率。
-optimize 会减慢链接速度,因为它指示链接器生成更小的 SWF。请注意,-optimize=true|false 对构建 SWC 没有任何影响,因为 SWC 是库并且必须未优化。
我很少弄乱 JVM 设置,因为 JVM 非常了解它的工作,并且在运行时可以很好地调整自己。大多数人通过设置各种 GC 调整参数使事情变得更糟。也就是说,大多数人都理解并正确设置了 3 种设置以供其使用:
-Xmx(最大堆大小)
-server 或 -client(HotSpot 服务器或客户端虚拟机)
-XX:+UseSerialGC 或 -XX:+UseParallelGC(或其他非串行 GC)
在运行 Flex 编译器时,-server 的性能始终比 -client 高 30%。-XX:+UseParallelGC 开启并行垃圾收集器。非常适合多核计算机,并且当计算机仍有 CPU 周期可用时。
您可能还想查看 HellFire 编译器守护程序 ( http://bytecode-workshop.com/ )。它使用多个处理器内核同时编译多个 Flex 应用程序。您还可以通过套接字在第二台机器上运行编译器(假设您的第二台机器具有更快的 CPU 和更多内存)。
在我看来,使用比库更多的模块并使用 HFCD。
希望这可以帮助。
-克莱门特
无需mxmlc
在命令行上使用即可添加编译器标志。在 Flex Navigator 中右键单击您的项目,选择 Properties,然后在出现的对话框中选择 Flex Compiler。在那里您可以添加任何额外的编译器标志。
不确定还有很多事情要做,更多的代码意味着更多的编译时间,就是这样。如果您不进行发布构建(或在 Flex Builder 中调用的任何内容),那么您的编译器设置不太可能optimize
一开始就包含在内。更好的选择是-incremental
(仅重新编译已更改的部分)和-keep-generated-actionscript
(阻止编译器删除它从应用程序的 MXML 文件生成的 ActionScript 文件)。
与 Flex Builder 相比,我更喜欢mxmlc
在命令行上使用(通过 Ant)。虽然我不认为后者的编译速度会变慢,但在各方面都感觉比较迟钝。使用 Ant 不仅可以在构建时进行编译,还可以进行条件编译(仅在源代码实际更改时才编译 SWF 或 SWC)。查看我的博客文章以获取更多信息。
您可以尝试的是Flex Compiler Shell,这是另一个可以加快速度的命令行工具。基本上,它会在构建之间尽可能多地保留内存,因此无需等待 JVM 启动(Flex 编译器是 Java 应用程序)之类的事情。另一方面,这正是 Flex Builder 所做的。
除了已经提到的建议之外,请关闭您已打开但未使用的所有项目。
在 Navigator 视图中单击 Project,然后选择“Close Unrelated Projects”。
根据您打开的项目数量,这可以显着改善编译时间以及性能。
迈克室
网格@adobe.com
编译时间缓慢通常是由大量嵌入式资源([Embed] 或@Embed)引起的。
本文中的选项 2 可能会对您有所帮助:[ http://www.rogue-development.com/blog2/2007/11/slow-flex-builder-compile-and-refresh-solution-modules/]
我用工作空间创建了 RAM Disk,它最多可以节省 10% 的编译时间。不多,但有些东西。
如果可能,您希望计算机上至少有 4 个演出,并确保覆盖 eclipse/flexbuilder 为应用程序提供的默认内存设置。
如果您不确定如何执行此操作,您可以在 /Applications 中找到 flexbuilder 应用程序,右键单击并选择“显示包内容”。然后进入内容文件并编辑 eclipse.ini 文件。编辑该文件的内存设置至少为:
-vmargs -Xms768m -Xmx768m -XX:PermSize=128m -XX:MaxPermSize=128m
进入 eclipse/flexbuilder 首选项并检查 Windows->Preferences->General 下的“显示堆状态”框也是值得的(这是在带有 FB 插件的 Eclipse 中,我假设它也适用于独立 FB) .
这会在窗口的右下方显示当前内存,并且有一个小垃圾桶图标,以便您可以强制进行垃圾收集。
我还建议您在文件更改时关闭项目的自动构建(您可以使用 cmd-B 强制构建)。
我们有一个巨大的项目,其中包含很多模块文件,并且这些步骤在 FlexBuilder 3 中的性能还不错。
转到项目-> 属性-> Flex 应用程序。列出的所有应用程序每次都会编译(即使您有默认设置)。如果您删除除默认值之外的所有内容(不用担心,它不会删除实际文件),它只会编译默认应用程序。这为我带来了显着的加速。如果您更改默认应用程序,它会将其添加到 Flex 应用程序列表中 - 添加到您的编译时间。您将需要维护此列表以获得最快的编译。
我总是禁用 Flex 的“自动编译”。它编译太多,耗时太长,因此打断了我的工作。
如果您有许多不同的项目文件并且所有这些都需要重新编译,但是您还打开了其他项目并且不想在构建时始终关闭它们,那么您也可以使用 Eclipse 工作集。
不幸的是,默认的 Flex Navigator 不支持工作集。但是您可以使用Window / Show View / ...打开Package Explorer。单击右上角的小白色向下箭头并选择Top Level Elements: Working Sets。然后,您可以添加工作集(又名项目组)。每个项目都需要在至少一个工作集中(“其他项目”是默认设置),但可以在多个工作集中。
现在使用Project / Build Working Set / ...您可以指示 Eclipse 构建此工作集中的所有项目,但不构建其他项目。如果您怀疑您的项目引用有时会被破坏,这将特别有用 - 否则构建“最顶层”项目应该会自动触发后续构建。
正如 Clement 所说,使用 HellFire Compiler Daemon。如果您的机器上有多个模块和更多 CPU 内核,它可以并行编译它们。另一种选择是使用提供相同功能的 IntelliJ(商业版)。
SDK 4.xx 引入了愚蠢的错误(请参阅 Adobe 错误系统,问题 FB-27440),这导致使用 SVN 或 CVS 元数据的项目编译速度比使用 SDK 3.xx 慢得多。关于如何修复它,请参见此处。
您可能想探索 Flex SDK 中的命令行编译器,mxmlc
. 我记得,Flex Builder 3 似乎隐藏了所有编译器细节,但也许您可以附加一些参数来帮助您加快编译速度。
例如,您可能想设置optimize=false
哪个会跳过优化字节码的步骤(可能会减少编译时间)?这当然是以实际应用程序的性能和文件大小为代价的。
mxmlc
可以在以下位置找到更多文档:http: //livedocs.adobe.com/flex/3/html/compilers_13.html。
祝你好运!
我不使用 Flex Builder,但我每天都使用 Flex SDK 编译器,我浪费了大量时间等待 MXMLC 编译器完成它的工作,直到我找到了 Flex Compiler SHell:
http://blog.zarate.tv/2008/12/07/theres-something-called-flex-compiler-shell/
虽然理论上 Flex Builder 已经使用了这种优化,但可能值得检查。
您可以使用WORKING SETS仅编译一组组件,这些组件是您正在更改的应用程序的一部分,而不是整个项目
http://livedocs.adobe.com/flex/3/html/help.html?content=build_6.html
通常第一次构建需要的时间最长,然后很快。那是使用带有 core 2 duo 的 Vista x64。
否则,我几乎可以肯定英特尔酷睿 i7 至尊版 965 3.2GHz 升级处理器会加速您的 Flex 构建速度很好.. :) :) :)