2008-08-29 105 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

相關問題