私はMacでFlexBuilder3を実行していますが、プロジェクトが大きくなるにつれて、コンパイル時間がますます長くなります。私はいくつかのSWCを使用していて、かなりの量のコードがありますが、毎日ビルドしてクラッシュするのに数分かかるべきではありませんか?
14 に答える
まず、いくつかの回答についてコメントします。
Flex Builderではデフォルトでインクリメンタルコンパイルを使用するため、明示的に-incrementalを指定する必要はありません。
-keep-generated-actionscriptは、コンパイルの途中でMXMLコンポーネント用に生成されたAS3コードを書き出すようにコンパイラーに指示するため、パフォーマンスを低下させます。コンパイル中のファイルI/Oは、不要な一時停止とCPU使用率の低下を意味します。
-optimizeは、リンカに小さいSWFを生成するように指示するため、リンクの速度が低下します。SWCはライブラリであり、最適化されていない必要があるため、-optimize = true|falseはSWCの構築に影響を与えないことに注意してください。
JVMはそのジョブをよく知っており、実行時にそれ自体を非常によく調整するため、JVM設定をめちゃくちゃにすることはめったにありません。ほとんどの人は、さまざまなGCチューニングパラメータを設定することで問題を悪化させます。とは言うものの、ほとんどの人が理解し、使用法を正しく設定するための3つの設定があります。
-Xmx(最大ヒープサイズ)
-serverまたは-client(HotSpotサーバーまたはクライアントVM)
-XX:+ UseSerialGCまたは-XX:+ UseParallelGC(またはその他の非シリアルGC)
-serverは、Flexコンパイラを実行すると、常に-clientを約30%上回ります。-XX:+ UseParallelGCは、並列ガベージコレクターをオンにします。マルチコアコンピューターに最適で、コンピューターにまだCPUサイクルに余裕がある場合。
HellFireコンパイラデーモン(http://bytecode-workshop.com/)も確認してください。複数のプロセッサコアを使用して、複数のFlexアプリケーションを同時にコンパイルします。ソケットを介して2番目のマシンでコンパイラを実行することもできます(2番目のマシンのCPUが高速でメモリが多いと仮定します)。
私の意見では、ライブラリよりも多くのモジュールを使用し、HFCDを使用します。
お役に立てれば。
-クレメント
mxmlc
コンパイラ フラグを追加できるようにするためだけにコマンド ラインで使用する必要はありません。Flex Navigator でプロジェクトを右クリックし、[プロパティ] を選択してから、表示されるダイアログで [Flex コンパイラ] を選択します。そこで、追加のコンパイラ フラグを追加できます。
やるべきことがたくさんあるとは言えませんが、コードが多いほどコンパイル時間が長くなります。リリース ビルド (または Flex Builder で呼ばれるもの) を行っていない場合、optimize
最初からコンパイラの設定に含まれている可能性は低いです。-incremental
(変更された部分のみを再コンパイルする) と-keep-generated-actionscript
(コンパイラがアプリケーションの MXML ファイルから生成した ActionScript ファイルを削除しないようにする)を試すのがよいでしょう。
mxmlc
Flex Builder よりも (Ant を使用して) コマンド ラインで使用する方がはるかに好きです。後者の方がコンパイルが遅くなるとは思いませんが、あらゆる点でより遅く感じます。Ant を使用すると、ビルド時のコンパイルだけでなく、条件付きコンパイル (ソース コードが実際に変更された場合にのみ SWF または SWC をコンパイルする) も実行できます。詳細については、私のブログ投稿をご覧ください。
あなたが試すことができるのはFlex Compiler Shellです。これは、物事を高速化できる別のコマンドラインツールです。基本的に、ビルド間でできるだけ多くのメモリを保持しようとするため、JVM の起動などを待つ必要はありません (Flex コンパイラは Java アプリケーションです)。一方、これはとにかく Flex Builder が行うことのようなものです。
すでに述べた提案に加えて、開いているプロジェクトのうち、使用していないプロジェクトはすべて閉じてください。
ナビゲータービューでプロジェクトをリッチクリックし、[無関係なプロジェクトを閉じる]を選択します。
開いているプロジェクトの数によっては、これにより、コンパイル時間だけでなく、パフォーマンス全体が大幅に向上する可能性があります。
マイクチャンバー
mesh@adobe.com
コンパイル時間が遅いのは、ほとんどの場合、多数の埋め込みリソース([Embed]または@Embed)があることが原因です。
この記事のオプション2はあなたを助けるかもしれません:[ http://www.rogue-development.com/blog2/2007/11/slow-flex-builder-compile-and-refresh-solution-modules/]
ワークスペースを使用してRAMディスクを作成しましたが、コンパイル時間が最大10%向上します。それほど多くはありませんが、何か。
可能であれば、コンピューターに少なくとも 4 ギガバイトが必要であり、eclipse/flexbuilder がアプリケーションに与えるデフォルトのメモリ設定を上書きするようにしてください。
これを行う方法がわからない場合は、/Applications で flexbuilder アプリを見つけ、右クリックして [パッケージの内容を表示] を選択します。次に、コンテンツ ファイルに移動し、eclipse.ini ファイルを編集します。そのファイルを編集して、メモリ設定を少なくとも次のようにします。
-vmargs -Xms768m -Xmx768m -XX:PermSize=128m -XX:MaxPermSize=128m
また、eclipse/flexbuilder の設定に移動し、[Windows] -> [設定] -> [全般] の下にある [ヒープ ステータスを表示] ボックスをチェックすることも価値があります (これは FB プラグインを使用する Eclipse にあり、スタンドアロン FB にもあると想定しています)。 .
これにより、ウィンドウの右下に現在のメモリが表示され、小さなゴミ箱アイコンが表示されるので、ガベージ コレクションを強制できます。
また、ファイルが変更されたときにプロジェクトの自動ビルドをオフにすることをお勧めします (cmd-B でビルドを強制できます)。
かなりの数のモジュール ファイルを含む巨大なプロジェクトがあり、FlexBuilder 3 のパフォーマンスはこれらの手順で十分でした。
SDK 4.xx にはばかげたバグ (Adobe バグシステム、問題 FB-27440 を参照) が導入され、SVN または CVS メタ データを含むプロジェクトのコンパイルが SDK 3.xx よりも大幅に遅くなります。修正方法については、こちらを参照してください。
[プロジェクト] -> [プロパティ] -> [Flex アプリケーション] に移動します。リストされているすべてのアプリケーションは、(デフォルト セットがある場合でも) 毎回コンパイルされます。デフォルト以外をすべて削除すると (実際のファイルは削除されませんのでご安心ください)、デフォルトのアプリのみがコンパイルされます。これにより、大幅な速度向上が実現しました。デフォルトのアプリを変更すると、それが Flex アプリケーション リストに追加され、コンパイル時間が長くなります。最速のコンパイルを得るには、このリストを維持する必要があります。
Clement が言ったように、HellFire Compiler Daemon を使用します。マシンに複数のモジュールとより多くの CPU コアがある場合、それらを並行してコンパイルできます。もう 1 つのオプションは、同じ機能を提供する IntelliJ (商用バージョン) を使用することです。
Flex の「自動コンパイル」は常に無効にしています。コンパイルが多すぎて、時間がかかりすぎて、作業が中断されます。
多くの異なるプロジェクト ファイルがあり、それらすべてを再コンパイルする必要があるが、他のプロジェクトも開いていて、常にビルドを行っているときにそれらを閉じたくない場合は、Eclipse ワーキング セットを使用することもできます。
残念ながら、デフォルトの Flex Navigator はワーキング セットをサポートしていません。ただし、 Window / Show View / ...でPackage Explorerを開くことができます。右上にある小さな白い下向き矢印をクリックして、Top Level Elements: Working Setsを選択します。その後、ワーキング セット (別名プロジェクトのグループ) を追加できます。各プロジェクトは、少なくとも 1 つのワーキング セット (「その他のプロジェクト」がデフォルト) に含まれている必要がありますが、複数のプロジェクトに含まれていてもかまいません。
Project / Build Working Set / ...を使用すると、このワーキング セット内のすべてのプロジェクトをビルドするように Eclipse に指示できますが、他のプロジェクトはビルドしません。これは、プロジェクトの参照が壊れていると思われる場合に特に便利です。それ以外の場合は、「最上位」のプロジェクトをビルドすると、後続のビルドが自動的にトリガーされます。
WORKING SETSを使用して、プロジェクト全体ではなく、変更するアプリケーションの一部である一連のコンポーネントのみをコンパイルできます。
http://livedocs.adobe.com/flex/3/html/help.html?content=build_6.html
Flex SDK にあるコマンドライン コンパイラを調べてみることをお勧めしますmxmlc
。思い出すと、Flex Builder 3 ではコンパイラの詳細がすべて隠されているように見えますが、コンパイルを高速化するのに役立つ引数を追加できる可能性があります。
たとえばoptimize=false
、バイトコードを最適化するステップをスキップする (おそらくコンパイル時間を短縮する) を設定したい場合があります。これにはもちろん、実際のアプリケーションのパフォーマンスとファイル サイズが犠牲になります。
に関するその他のドキュメントは、 http mxmlc
: //livedocs.adobe.com/flex/3/html/compilers_13.htmlにあります。
幸運を!
私は Flex Builder を使用していませんが、毎日 Flex SDK コンパイラを使用しており、Flex Compiler SHell を見つけるまで、MXMLC コンパイラが機能するのを待つのに膨大な時間を無駄にしていました。
http://blog.zarate.tv/2008/12/07/theres-something-called-flex-compiler-shell/
理論的には、Flex Builder はすでにこの最適化を使用していますが、チェックする価値があるかもしれません。
通常、最初のビルドに最も時間がかかり、その後はかなり速くなります。Vista x64 とコア 2 デュオを使用しています。
それ以外の場合は、インテル Core i7 エクストリーム エディション 965 3.2 GHz アップグレード プロセッサが Flex の構築を適切に高速化することはほぼ確実です.. :) :) :)