2012-10-16 13 views
9

Sto sviluppando l'app Win8 con TypeScript.Il compilatore TypeScript diventa lento?

Per compilare il mio codice dattiloscritto, ho aggiunto winrt.d.ts e winjs.d.ts poi fatto riferimento li utilizzando:

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

Compile & accumulo riuscito ma Intellisense di IDE stavo essendo molto lento. Ho semplicemente aperto winrt.d.ts e ho controllato il file. Il file ha 18.770 linee che è davvero un enorme file da compilare al volo.

Esistono opzioni o metodi per fare riferimento a questi file di grandi dimensioni senza compilare nuovamente come lib.d.ts?

Questa lentezza danneggia seriamente la mia selezione di TypeScript.

AGGIORNAMENTO:

Nella versione del compilatore corrente (0.8.0), non esiste una soluzione. Spero di vedere il miglior guadagno in termini di prestazioni nella prossima release.

aggiornamento:

Qui è la mia semplice hack per aumentare dev. prestazione. Ho semplicemente creato winrt.compact.d.ts. Quindi copia solo parte degli spazi dei nomi che sono effettivamente utilizzati e salva il file.

Fortunatamente il file (winrt.d.ts) sembra generato da da diversi file di dichiarazione. Quindi ogni spazio dei nomi è chiaramente separato dagli altri. È molto più semplice creare una versione compatta per WinRT.

risposta

2

Correggimi se ho torto, ma non penso che lo lib.d.ts venga trattato in modo particolare dal compilatore. Ho preso uno sguardo al codice sorgente e qui è il frammento che si occupa di 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); 
}  

Se l'utente richiede lib.d.ts da includere, è semplicemente aggiunto per l'ambiente di compilazione come il primo pezzo di codice per la compilazione . Tutti gli altri file di origine (memorizzati nel opts.unnamed sono aggiunti esattamente nello stesso modo:

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

Quindi, se lib.d.ts non viene trattato in modo speciale, allora anche questo non è possibile per gli altri file (dichiarazione) Inoltre, su. mio sistema lib.d.ts ha 7.677 linee, che è molto inferiore al segnalato 18.770 per winrt.d.ts, quindi potrebbe essere che la somma di tutte le linee è semplicemente troppo per il compilatore di raggiungere velocità accettabile.

oltre a questo, il mio l'unica idea è che "qualcos'altro" stia causando il rallentamento della tua macchina. Se mi fornisci un link alle librerie e uno snippet del tuo codice, io c almeno misurare la durata di una compilazione sul mio sistema.

2

Non ci sono attualmente un elemento di lavoro eccezionale per questo problema su CodePlex:

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

non c'è niente che può attualmente fare per migliorare questo (tranne dare il compilatore più hardware!) Ma si spera che l'elemento di lavoro verrà prelevato e il problema verrà risolto.

Problemi correlati