2012-10-16 11 views
9

私はType8でWin8アプリを開発しています。私のtypescriptですコードをコンパイルするTypeScriptコンパイラは遅くなりますか?

は、私が使用して彼らに を参照し、その後winrt.d.tswinjs.d.tsを追加しました:

<reference path="winrt.d.ts" static="true" /> 
<reference path="winjs.d.ts" static="true" /> 

コンパイル&は、ビルドが成功したが、IDEのIntelliSenseが非常に遅いされていました。私は単にwinrt.d.tsを開いてファイルをチェックしました。このファイルには18,770行があり、実際にはコンパイルするには膨大なファイルです。

これらの巨大定義ファイルを参照するためのオプションや方法は、lib.d.tsのようにもう一度コンパイルする必要はありませんか?

この遅さは、私のタイプスクリプトの選択を著しく損なうものです。

更新:

を現在のコンパイラのバージョン(0.8.0)には、解が存在しません。 近い将来のリリースで最高のパフォーマンスを期待しています。

更新日:

ここで私は開発者を増やすための単純なハックです。パフォーマンス。 私は単にwinrt.compact.d.tsを作成しました。 次に、実際に使用されている名前空間の一部だけをコピーして、ファイルを保存します( )。

ファイル(winrt.d.ts)は、いくつかの宣言ファイルから が生成されているようです。したがって、各ネームスペースは であり、他のネームスペースは明確に区別されています。 WinRTのコンパクトバージョンを作成する方がはるかに簡単です。私が間違っている場合

答えて

2

は私を修正して、私はlib.d.tsは、コンパイラによって特別な方法で処理されているとは思いません。私はソースコードを見ていたし、ここでlib.d.tsを扱う抜粋です:ユーザーが含まれるlib.d.tsを要求した場合

if(this.compilationSettings.useDefaultLib) { 
    var compilerFilePath = this.ioHost.getExecutingFilePath(); 
    var binDirPath = this.ioHost.dirName(compilerFilePath); 
    var libStrPath = this.ioHost.resolvePath(binDirPath + "\\lib.d.ts"); 
    code = new TypeScript.SourceUnit(libStrPath, null); 
    this.compilationEnvironment.code.push(code); 
}  

、単にコンパイルするコードの最初の部分としてコンパイル環境に追加されます。 opts.unnamedに保存されている他のすべてのソースファイルが(まったく同じ方法で追加されています。

for(var i = 0; i < opts.unnamed.length; i++) { 
    code = new TypeScript.SourceUnit(opts.unnamed[i], null); 
    this.compilationEnvironment.code.push(code); 
} 

のでlib.d.tsは特別な方法で処理されていない場合、これは上、また、他の(宣言)ファイル用ではない可能です私winrt.d.tsのための報告18770より道少ない7677本のラインを持っているlib.d.tsシステム、ので、コンパイラが許容速度を達成するためにすべての行の合計があまりにも多くあることかもしれません。それよりも

その他、私の唯一のアイデアは、「他の何か」はあなたのマシンの速度低下を引き起こしているということです。あなたはライブラリへのリンクとあなたのコードのスニペットを私に提供する場合は、I cは私のシステムでコンパイルの実行がどれくらい時間がかかるかを少なくとも測定します。

2

優れた作業項目は、CodePlexに上のこの問題のために現在あり:

http://typescript.codeplex.com/workitem/265

(コンパイラ、より多くのハードウェアを与える除く!)これを改善するためにあなたが現在できることは何でもうまくいけば、作業項目はありません拾い上げられ、問題は解決されます。

関連する問題