对加快Flex Builder 3的编译时间有何建议?
我在Mac上运行Flex Builder 3,并且随着项目的增长,编译时间越来越长。我使用的是一些SWC,并且有大量的代码,但是每天编译和崩溃应该不会花费几分钟吗?
解决方案
回答
我们可能想探索Flex SDKmxmlc
中的命令行编译器。我记得,Flex Builder 3似乎隐藏了所有编译器详细信息,但是也许我们可以添加一些参数,以加快编译速度。
例如,我们可能想要设置" optimize = false",这将跳过优化字节码的步骤(也许会减少编译时间)?当然,这是以实际应用程序的性能和文件大小为代价的。
有关" mxmlc"的更多文档,请访问:http://livedocs.adobe.com/flex/3/html/compilers_13.html。
祝你好运!
回答
编译时间慢通常是由于拥有大量嵌入式资源([Embed]或者@Embed)引起的。
本文的选项2可能会:[http://www.rogue-development.com/blog2/2007/11/slow-flex-builder-compile-and-refresh-solution-modules/]
回答
不必为了添加编译器标志而在命令行上使用mxmlc
。在Flex导航器中右键单击项目,选择Properties,然后在出现的对话框中选择Flex Compiler。在那里,我们可以添加任何额外的编译器标志。
不确定还有很多事情要做,更多的代码意味着更多的编译时间,这就是事实。如果我们不进行发行版本构建(或者在Flex Builder中进行任何命名),则编译器设置不太可能包含" optimize"。更好的选择是-incremental(仅重新编译已更改的部分)和-keep-generation-actionscript(阻止编译器删除从应用程序的MXML文件生成的ActionScript文件)。
与Flex Builder相比,我非常喜欢在命令行(通过Ant)使用mxmlc
。尽管我不认为后者的编译速度较慢,但从各个方面来看它都比较缓慢。使用Ant不仅可以在编译时进行编译,而且可以进行条件编译(仅在源代码实际更改的情况下才编译SWF或者SWC),因此可以做更多的事情。查看我的博客文章以获取更多信息。
我们可以尝试使用Flex Compiler Shell,这是另一个可以加快处理速度的命令行工具。基本上,它尝试在两次构建之间尽可能多地保留内存,因此无需等待JVM启动(Flex编译器是Java应用程序)之类的事情。另一方面,这还是Flex Builder所做的事情。
回答
除了已经提到的建议之外,请关闭所有尚未使用的打开的项目。
丰富地单击导航器视图中的项目,然后选择"关闭不相关的项目"。
根据我们打开了多少项目,这可以显着改善编译时间以及整个性能。
迈克·钱伯斯
回答
转到项目->属性-> Flex应用程序。列出的所有应用程序每次都会编译(即使我们具有默认设置)。如果我们删除除默认设置以外的所有内容(请放心,它不会删除实际文件),则只会编译默认应用程序。这为我带来了显着的提速。如果更改默认应用程序,则会将其添加到" Flex应用程序"列表中,从而增加编译时间。我们将需要维护此列表以获得最快的编译速度。
回答
如果可能,我们希望计算机上至少有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的这些步骤的性能不错。
回答
通常,第一个构建花费的时间最长,然后很快。这是使用带有Core 2 Duo的Vista x64.
否则,我几乎可以肯定,英特尔酷睿i7至尊版965 3.2GHz升级处理器可以很好地加快Flex的建立速度.. :) :) :)
回答
我不使用Flex Builder,但是我每天都使用Flex SDK编译器,我浪费大量时间等待MXMLC编译器完成其工作,直到我发现Flex Compiler SHell:
http://blog.zarate.tv/2008/12/07/theres-something-所谓的-flex-compiler-shell /
尽管从理论上讲Flex Builder已经使用了这种优化,但可能值得检查。
回答
我创建了带有工作空间的RAM磁盘,它最多可以提供10%的更好的编译时间。不多,但是有些。
回答
我总是禁用Flex的"自动编译"功能。它编译太多,花费时间太长,因此打断了我的工作。
如果我们有许多不同的项目文件,并且所有这些文件都需要重新编译,但是我们还打开了其他项目,并且不想在执行构建时总是关闭它们,那么也可以使用Eclipse Working Sets。
不幸的是,默认的Flex Navigator不支持工作集。但是,我们可以使用"窗口" /"显示视图" /" ..."打开"程序包资源管理器"。单击右上角的白色小向下箭头,然后选择"顶层元素:工作集"。然后,我们可以添加工作集(也称为项目组)。每个项目至少需要在一个工作集中(默认为"其他项目"),但是可以在多个工作集中。
现在,使用Project / Build Working Set / ...,我们可以指示Eclipse构建该工作集中的所有项目,但不能构建其他所有项目。如果我们怀疑项目引用有时会中断,则此功能特别有用,否则构建"最顶层"项目应会自动触发后续构建。
回答
首先,对一些响应发表评论:
- 无需在Flex Builder中显式指定-incremental,因为默认情况下它使用增量编译。
- -keep-generation-actionscript是性能杀手,因为它指示编译器在编译过程中写出为MXML组件生成的AS3代码。编译过程中的文件I / O意味着不必要的暂停和低CPU使用率。
- -optimize会减慢链接速度,因为它会指示链接程序生成较小的SWF。请注意,-optimize = true | false对构建SWC没有任何影响,因为SWC是库并且必须未优化。
- 我很少弄混JVM设置,因为JVM非常了解其工作,并且在运行时对其自身进行了很好的调整。通过设置各种GC调整参数,大多数人会使情况变得更糟。就是说,大多数人了解并正确设置了以下3种设置:
-Xmx(最大堆大小)
-server或者-client(热点服务器或者客户端VM)
-XX:+ UseSerialGC或者-XX:+ UseParallelGC(或者其他非串行GC)
运行Flex编译器时,-server始终比-client优越约30%。
-XX:+ UseParallelGC打开并行垃圾收集器。是多核计算机的理想选择,并且当计算机仍有CPU周期可节省时。
我们可能还想查看HellFire编译器守护程序(http://bytecode-workshop.com/)。它使用多个处理器内核来同时编译多个Flex应用程序。我们还可以通过套接字在第二台计算机上运行编译器(假设第二台计算机具有更快的CPU和更多的内存)。
我认为,使用的模块多于库,并使用HFCD。
希望这可以帮助。
-克莱门特
回答
正如Clement所说,请使用HellFire编译器守护程序。如果计算机上有多个模块和更多CPU内核,则可以并行编译它们。另一种选择是使用提供相同功能的IntelliJ(商业版)。
回答
SDK 4.x.x引入了愚蠢的错误(请参阅Adobe错误系统,版本FB-27440),这导致使用SVN或者CVS元数据的项目的编译速度比使用SDK 3.x.x的速度慢得多。有关如何修复的信息,请参见此处。