2012-10-16 34 views
9

Tôi đang phát triển ứng dụng Win8 với TypeScript.Trình biên dịch TypeScript trở nên chậm?

Để biên dịch mã nguyên cảo của tôi, tôi đã thêm winrt.d.tswinjs.d.ts sau đó tham chiếu chúng sử dụng:

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

Compile & xây dựng thành công nhưng Intellisense IDE được là rất chậm. Tôi chỉ cần mở winrt.d.ts và kiểm tra tệp. Tệp này có 18.770 dòng thực sự là tệp lớn để biên dịch khi đang di chuyển.

Có bất kỳ tùy chọn hoặc phương pháp nào để tham khảo những tệp định nghĩa khổng lồ này mà không cần biên dịch lại giống như lib.d.ts không?

Sự chậm chạp này gây tổn hại nghiêm trọng đến lựa chọn TypeScript của tôi.

CẬP NHẬT:

Trên phiên bản trình biên dịch hiện tại (0.8.0), không có giải pháp. Hy vọng sẽ đạt được hiệu suất tốt nhất trong bản phát hành gần đây trong tương lai.

CẬP NHẬT:

Đây là cách đơn giản của tôi để tăng mức độ phát triển. hiệu suất. Tôi chỉ cần tạo winrt.compact.d.ts. Sau đó chỉ sao chép một phần của không gian tên thực sự được sử dụng và lưu tệp.

May mắn thay tệp (winrt.d.ts) có vẻ như đang được tạo từ một số tệp kê khai. Vì vậy, mỗi không gian tên là tách biệt rõ ràng với những người khác. Việc tạo phiên bản nhỏ gọn cho WinRT dễ dàng hơn nhiều.

Trả lời

2

Đúng nếu tôi sai, nhưng tôi không nghĩ rằng lib.d.ts đang được xử lý theo bất kỳ cách nào đặc biệt bởi trình biên dịch. Tôi đã xem xét mã nguồn và đây là đoạn mã mà giao dịch với 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); 
}  

Nếu người dùng yêu cầu lib.d.ts để được bao gồm, nó chỉ đơn giản là bổ sung vào môi trường biên soạn như là phần đầu tiên của mã để biên dịch . Tất cả các file nguồn khác (được lưu trữ trong opts.unnamed được thêm vào một cách chính xác theo cùng một cách:

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

Vì vậy, nếu lib.d.ts không được đối xử một cách đặc biệt thì đây cũng không phải là có thể cho khai khác) file (Ngoài ra, trên. hệ thống của tôi lib.d.ts có 7.677 dòng, đó là cách ít hơn 18,770 báo cáo cho winrt.d.ts, vì vậy nó có thể là tổng của tất cả các dòng chỉ là quá nhiều cho trình biên dịch để đạt được tốc độ chấp nhận được. chỉ có ý tưởng là "cái gì khác" đang gây ra sự chậm lại của máy tính của bạn. Nếu bạn cung cấp cho tôi một liên kết đến các thư viện và một đoạn mã của bạn, tôi c ít nhất là đo thời gian một trình biên dịch chạy trên hệ thống của tôi.

2

hiện còn có một hạng mục công trình xuất sắc cho vấn đề này trên CodePlex:

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

Không có gì bạn hiện có thể làm gì để cải thiện điều này (! Trừ cho trình biên dịch phần cứng hơn) Nhưng hy vọng các hạng mục công trình là sẽ được chọn và vấn đề sẽ được giải quyết.

Các vấn đề liên quan