2008-08-29 104 views

回答

5

除了已经提到的建议之外,关闭您打开的所有未使用的项目。

在导航器视图中点击项目,然后选择“关闭不相关的项目”。

取决于您打开了多少个项目,这可以显着提高编译时间以及所有性能。

麦克风室

mesh @ adobe。com

+2

可悲的是,即使是在我8核心Mac Pro W/12 GB内存,Flex构建需要一小段代码。我浪费了很多时间等待Flex构建。 我的双核Xeon Linux机器上的mxmlc没有太多,如果有更快。 “关闭不相关的项目”对我来说并不重要;我只打开一个项目。 – 2008-11-23 01:39:53

+1

我们有一个非常大的Flash Builder 4项目,即使在最快的机器上编译时间仍然是个问题。问题在于,最小的变化,甚至是私有函数的内部变化,似乎都会导致Flash Builder/Flex完全不必要地重建世界。也许他们计划将来的版本缓存等! – 2010-06-09 08:17:10

0

您可能想要了解Flex SDK中找到的命令行编译器mxmlc。我记得,Flex Builder 3似乎隐藏了所有的编译器细节,但也许有一些可以附加的参数可以帮助您加快编译速度。

例如,您可能想要设置optimize=false这将跳过优化字节码的步骤(可能会缩短编译时间)?这当然是以实际应用程序的性能和文件大小为代价的。

有关mxmlc的更多文档,请访问:http://livedocs.adobe.com/flex/3/html/compilers_13.html

祝你好运!

9

有没有必要使用mxmlc在命令行上,只是为了能够添加编译器标志。右键单击Flex Navigator中的项目,在出现的对话框中选择Properties,然后选择Flex Compiler。你可以添加任何额外的编译器标志。

不确定有很多事情要做,更多的代码意味着更多的编译时间,这就是它的方式。如果你没有做一个发布版本(或者在Flex Builder中调用的任何版本),那么你的编译器设置不太可能包含optimize。更好的选择是-incremental(它只重新编译已更改的部分)和-keep-generated-actionscript(这会停止编译器删除从应用程序的MXML文件中生成的ActionScript文件)。

与Flex Builder相比,我非常喜欢在命令行上使用mxmlc(通过Ant)。虽然我认为后者编写得并不慢,但在各方面都感觉更加缓慢。使用Ant还可以在构建和条件编译时执行除编译以外的任何操作(如果源代码实际已更改,则只编译SWF或SWC)。查看a blog post of mine了解更多信息。

你可以尝试的是Flex Compiler Shell,另一种命令行工具,可以加快速度。基本上它会尽可能地在内存之间保留内存,所以不需要等待JVM启动(Flex编译器是Java应用程序)。另一方面,这也是Flex Builder所做的。

1

转到项目 - >属性 - > Flex应用程序。列出的所有应用程序都会每次编译(即使您有默认设置)。如果你删除了一切,但默认(不用担心,它不会删除实际的文件),它只编译默认的应用程序。这导致了我的显着加速。如果您更改默认应用程序,则会将其添加到Flex应用程序列表中 - 从而增加编译时间。你需要维护这个列表以获得最快的编译。

2

如果可能,您希望计算机上至少有4个演出,并确保覆盖eclipse/flexbuilder为应用程序提供的默认内存设置。

如果您不确定如何操作,可以在/ Applications中找到flexbuilder应用程序,右键单击并选择“显示包装内容”。然后进入内容文件并编辑eclipse.ini文件。编辑该文件具有至少内存设置:

-vmargs -Xms768m -Xmx768m -XX:PermSize=128m -XX:MaxPermSize=128m 

这也是值得进入月食/弹性生成的喜好和检查下Windows的>首选项“显示堆状态”对话框>常规(这是与FB插件日食,我假设它也有独立的FB)。

这显示了窗口右下方的当前内存并且有一个小垃圾图标,因此您可以强制进行垃圾回收。

我也建议在文件更改时关闭项目的自动构建(可以使用cmd-B强制构建)。

我们有一个很大的项目,有很多模块文件,FlexBuilder 3的性能在这些步骤中体现得很好。

-1

通常情况下,第一次构建时间最长,然后在此之后很快。这是使用Vista x64 w/core 2二重奏。

否则,我几乎可以肯定一个英特尔酷睿i7至尊版965 3.2GHz的处理器升级将很好地加速你的Flex建设了.. :) :) :)

0

我不使用Flex Builder中,但我使用Flex SDK编译器每天和我是在浪费等待MXMLC编译大量的时间来完成其工作,直到我发现Flex编译器外壳:

http://blog.zarate.tv/2008/12/07/theres-something-called-flex-compiler-shell/

虽然在理论上Flex Builder中已经使用此优化,可能是值得检查。

+0

对不起,只是意识到Theo链接到它:| – 2009-01-16 08:08:39

4

我用工作区创建了RAM磁盘,并且它的编译时间缩短了10%。不多,但有些事。

1

我总是禁用Flex的“自动编译”。它编译得太多,花费时间太长,所以打断了我的工作。

如果您有许多不同的项目文件,并且需要重新编译所有这些文件,但您也打开了其他项目并且不想关闭它们,则始终在进行构建,您还可以使用Eclipse工作集。

不幸的是,默认的Flex Navigator不支持工作集。但您可以打开包资源管理器窗口/显示视图/ ...。点击右上方的小白色向下箭头,并选择顶级元素:工作集。然后您可以添加工作集(也称为项目组)。每个项目至少需要一个工作集(“其他项目”是默认的),但可以分成几个。

现在用项目/构建工作集/ ...您可以指示Eclipse构建此工作集中的所有项目,但其他项目均不包含。如果你怀疑你的项目引用有时会被破坏,这是特别有用的,否则构建'最高'的项目应该会自动触发后续的构建。

10

首先,评论上的一些反应:

  1. 没有必要在Flex Builder中明确指定-incremental,因为它默认使用增量编译。

  2. -keep-generated-actionscript是一个性能杀手,因为它指示编译器在编译过程中写出为MXML组件生成的AS3代码。编译过程中的文件I/O意味着不必要的暂停和较低的CPU利用率。

  3. -optimize减慢链接速度,因为它会指示链接器生成较小的SWF。请注意,-optimize = true | false对构建SWC没有任何影响,因为SWC是库并且必须未优化。

  4. 我很少搞砸JVM设置,因为JVM知道它的工作,并且在运行时很好地调整自己。大多数人通过设置各种GC调整参数使情况变得更糟。这就是说,有3个设置大多数人理解和正确为自己使用设置:

-Xmx(最大堆大小)

-server或-client(HotSpot的服务器或客户端VM)

-XX:+ UseSerialGC或-XX:+ UseParallelGC(或其他非串行GC)

- 运行Flex编译器时,服务器始终优于-client约30%。 -XX:+ UseParallelGC打开并行垃圾收集器。是多核计算机的理想选择,当计算机仍然有CPU周期可用时。

您可能还想看看HellFire编译器守护进程(http://bytecode-workshop.com/)。它使用多个处理器内核来同时编译多个Flex应用程序。你也可以通过套接字在第二台机器上运行编译器(假设你的第二台机器具有更快的CPU和更多的内存)。

在我看来,使用比库更多的模块和使用HFCD。

希望这会有所帮助。

- 元素

1

正如Clement所说,使用HellFire编译器守护程序。如果你的机器上有多个模块和更多的CPU核心,它可以并行编译它们。另一种选择是使用提供相同功能的IntelliJ(商业版)。

1

SDK 4.x.x引入了一个愚蠢的bug(请参阅Adobe bugsystem,问题FB-27440),这会导致SVN或CVS元数据项目的编译速度比SDK 3.x.x慢得多。关于如何修复,请参阅here

相关问题