2012-10-16 19 views
9

मैं टाइपप्रति साथ Win8 एप्लिकेशन विकसित करने कर रहा हूँ।टाइपस्क्रिप्ट कंपाइलर धीमा हो जाता है?

मेरी टाइपप्रति कोड संकलन करने के लिए, मैं winrt.d.ts जोड़ा गया है और winjs.d.ts फिर उन्हें संदर्भित का उपयोग कर:

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

संकलित & निर्माण सफल रहा लेकिन आईडीई के IntelliSense बहुत धीमी गति से किया जा रहा था। मैंने बस winrt.d.ts खोला और फ़ाइल की जांच की। फ़ाइल में 18,770 लाइनें हैं जो फ्लाई पर संकलन करने के लिए वास्तव में बड़ी फ़ाइल है।

वहाँ रहे हैं किसी भी विकल्प या बिना संकलन फिर सिर्फ lib.d.ts की तरह उन विशाल परिभाषा फ़ाइल को संदर्भित करने के तरीकों?

इस सुस्ती को गंभीरता से मेरी टाइपप्रति चयन दर्द होता है।

UPDATED:

वर्तमान संकलक संस्करण (0.8.0) पर, वहाँ कोई समाधान नहीं है। निकट भविष्य में रिलीज में सर्वश्रेष्ठ प्रदर्शन लाभ देखने की उम्मीद है।

UPDATED:

यहाँ है मेरे बस देव बढ़ावा देने के लिए हैक। प्रदर्शन। मैं बस winrt.compact.d.ts बनाया। फिर नामस्थान जो वास्तव में का इस्तेमाल किया और फाइल को सेव कर रहे हैं का ही हिस्सा कॉपी।

सौभाग्य से फ़ाइल (winrt.d.ts) कई घोषणा फ़ाइलों से उत्पन्न होने की तरह दिखती है। इसलिए प्रत्येक नाम स्थान स्पष्ट रूप से दूसरों से अलग है। WinRT के लिए कॉम्पैक्ट संस्करण बनाना बहुत आसान है।

उत्तर

2

अगर मैं गलत हूं तो मुझे सही करें, लेकिन मुझे नहीं लगता कि 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); 
}  

उपयोगकर्ता lib.d.ts शामिल किया जाना है, यह बस कोड के पहले टुकड़ा संकलित करने के लिए के रूप में संकलन वातावरण में जोड़ा जाता है का अनुरोध करती है । अन्य सभी स्रोत फ़ाइलें (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 एक विशेष तरीके से इलाज नहीं किया जा रहा है तो यह भी अन्य (घोषणा) फ़ाइलों के लिए संभव नहीं है इसके अलावा, पर। अपने सिस्टम lib.d.ts 7677 लाइनों है, जो जिस तरह से winrt.d.ts के लिए सूचना 18,770 से भी कम है, तो यह हो सकता है कि सभी लाइनों का योग संकलक स्वीकार्य गति को प्राप्त करने के लिए बहुत ज्यादा है।

उसके अलावा, मेरी केवल विचार यह है कि "कुछ और" आपकी मशीन की मंदी का कारण बन रहा है। अगर आप मुझे पुस्तकालयों और आपके कोड के स्निपेट के साथ एक लिंक प्रदान करते हैं, तो मैं कम से कम मापें कि मेरे सिस्टम पर संकलन कितना समय लगता है।

2

वर्तमान में Codeplex पर इस समस्या के लिए एक काम मद बकाया नहीं है:

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

(! संकलक अधिक हार्डवेयर देना छोड़कर) कुछ भी नहीं आप वर्तमान में इस सुधार करने के लिए क्या कर सकते हैं लेकिन उम्मीद है कि काम आइटम नहीं है उठाया जाएगा और मुद्दा हल हो जाएगा।

संबंधित मुद्दे