2012-10-16 7 views
9

Ich entwickle Win8 App mit TypeScript.TypeScript-Compiler wird langsam?

Zu meinem Typoskript Code zu kompilieren, habe ich winrt.d.ts und winjs.d.ts verwiesen sie dann mit:

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

Compile & Build erfolgreich, aber Intellisense IDE wurde sehr langsam zu sein. Ich öffnete einfach winrt.d.ts und überprüfte die Datei. Die Datei hat 18.770 Zeilen, was wirklich eine riesige Datei ist, die im laufenden Betrieb kompiliert werden kann.

Gibt es irgendwelche Optionen oder Methoden, um diese riesige Definitionsdatei zu referenzieren, ohne sie erneut zu kompilieren, genau wie lib.d.ts?

Diese Langsamkeit verletzt ernsthaft meine TypScript-Auswahl.

AKTUALISIERT:

Auf der aktuellen Compiler-Version (0.8.0), gibt es keine Lösung. Ich hoffe, in naher Zukunft den besten Leistungszuwachs zu sehen.

AKTUALISIERT:

Hier ist meine einfach zu steigern Entwickler hacken. Performance. Ich habe einfach winrt.compact.d.ts erstellt. Kopieren Sie dann nur einen Teil der tatsächlich verwendeten Namespaces und speichern Sie die Datei.

Glücklicherweise sieht die Datei (winrt.d.ts) so aus, als ob sie aus mehreren Deklarationsdateien generiert wird. So ist jeder Namespace klar von anderen getrennt. Es ist viel einfacher, kompakte Version für WinRT zu machen.

Antwort

2

Korrigieren Sie mich, wenn ich falsch liege, aber ich denke nicht, dass lib.d.ts in irgendeiner speziellen Weise vom Compiler behandelt wird. Ich habe einen Blick auf den Quellcode und hier ist der Code-Schnipsel, die mit lib.d.ts beschäftigt:

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); 
}  

Wenn der Benutzer lib.d.ts fordert aufgenommen werden, ist es einfach auf die Kompilierungsumgebung als erstes Stück Code hinzugefügt zu kompilieren . Alle anderen Quelldateien (in opts.unnamed gespeichert sind, in genau der gleichen Weise hinzugefügt:

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

Also, wenn lib.d.ts ist nicht in besonderer Weise behandelt wird, dann ist dies für andere auch nicht möglich ist (Erklärung) -Dateien Auch auf. mein System lib.d.ts 7677 Linien hat, die Art und Weise weniger als die berichtete 18.770 für winrt.d.ts ist, so kann es sein, dass die Summe aller Linien ist einfach zu viel für die Compiler akzeptabler Geschwindigkeit zu erreichen.

Other than that, mein Die einzige Idee ist, dass "etwas anderes" die Verlangsamung Ihrer Maschine verursacht. Wenn Sie mir einen Link zu den Bibliotheken und einen Ausschnitt Ihres Codes geben, dann c ein Maß zumindest, wie lange ein Kompilierungslauf auf meinem System dauert.

2

Es gibt derzeit ein Workitem hervorragend für diese Ausgabe auf Codeplex:

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

Es gibt nichts, was man derzeit tun können, dies zu verbessern (mit Ausnahme der Compiler mehr Hardware geben!) Aber hoffentlich das Workitem wird abgeholt und das Problem wird gelöst.

Verwandte Themen