2012-10-16 13 views
9

Rozwijam aplikację Win8 z TypeScript.Kompilator TypeScript staje się wolny?

Aby skompilować mojego kodu wynikowego, dodałem winrt.d.ts i winjs.d.ts następnie odwoływać im używając:

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

kompilacji & build udało ale IDE INTELLISENSE był ewidentnie bardzo powolny. Otworzyłem po prostu winrt.d.ts i zaznaczyłem plik. Plik ma 18 770 linii, co jest naprawdę ogromnym plikiem do kompilacji w locie.

Czy są jakieś opcje lub metody, aby odwołać się do tych ogromnych plików definicji bez kompilacji ponownie tak jak lib.d.ts?

Powoli to poważnie rani mój wybór TypeScript.

AKTUALIZACJA:

W aktualnej wersji kompilatora (0.8.0), nie ma rozwiązania. Mam nadzieję, że najlepszy wzrost wydajności nastąpi w niedalekiej przyszłości.

AKTUALIZACJA:

Oto mój po prostu włamać się do zwiększenia dev. wydajność. Po prostu utworzyłem winrt.compact.d.ts. Następnie skopiuj tylko część obszarów nazw, które faktycznie są używane i zapisz plik. Na szczęście plik (winrt.d.ts) wygląda na wygenerowany z kilku plików deklaracji. Tak więc każda przestrzeń nazw jest wyraźnie oddzielona od innych. Dużo łatwiej jest zrobić wersję kompaktową dla WinRT.

Odpowiedz

2

Popraw mnie, jeśli się mylę, ale nie sądzę, że lib.d.ts jest traktowany w jakikolwiek specjalny sposób przez kompilator. Wziąłem spojrzeć na kodzie źródłowym a oto fragment, który zajmuje się 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); 
}  

Jeżeli użytkownik żąda lib.d.ts zostać włączone, to po prostu dodaje się do środowiska kompilacji jako pierwszy kawałek kodu do kompilacji . Wszystkie pozostałe pliki źródłowe (przechowywane w opts.unnamed dodaje się dokładnie w ten sam sposób:

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

Więc jeśli lib.d.ts nie jest traktowany w sposób szczególny, to jest to również nie jest możliwe dla innych oświadczenie) plików (również na. mój system lib.d.ts ma 7,677 linii, która jest sposobem mniej niż omawianym 18,770 dla winrt.d.ts, więc to może być, że suma wszystkich linii jest po prostu zbyt dużo dla kompilatora, aby osiągnąć akceptowalny prędkość.

Poza tym, mój jedynym pomysłem jest to, że "coś innego" powoduje spowolnienie komputera. Jeśli podasz mi link do bibliotek i fragment kodu, ja c przynajmniej zmierzyć, jak długo trwa wykonywanie kompilacji w moim systemie.

2

Obecnie pozycja dzieło wybitne tego problemu na Codeplex:

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

Nic nie można obecnie zrobić, aby poprawić ten (z wyjątkiem dać kompilator więcej sprzętu!), Ale miejmy nadzieję, że element roboczy zostanie odebrany, a problem zostanie rozwiązany.

Powiązane problemy