8

Tôi có một tệp nhị phân lớn được xây dựng từ nhiều tệp lib tĩnh và tệp cpp độc lập. Nó được cấu hình để sử dụng liên kết gia tăng, tất cả các tối ưu hóa bị vô hiệu hóa bởi /Od - đó là gỡ lỗi xây dựng.Hiệu suất thấp của liên kết gia tăng

Tôi nhận thấy rằng nếu tôi thay đổi bất kỳ tệp cpp độc lập nào thì liên kết gia tăng sẽ chạy nhanh - 1 phút. Nhưng nếu tôi thay đổi bất kỳ cpp trong bất kỳ lib tĩnh sau đó nó chạy dài - 10 phút, cùng thời điểm như liên kết bình thường. Trong trường hợp này tôi không được hưởng lợi từ việc liên kết gia tăng. Có thể tăng tốc không? Tôi sử dụng VS2005.

+0

Bạn chỉ thay đổi tệp .lib thực hoặc tệp tiêu đề, trong trường hợp cuối cùng không thực sự có thể (nhưng bạn có thể thấy một số lợi ích khi sử dụng pch). – KillianDS

+0

Tôi đang thay đổi chỉ một tệp cpp từ .lib. – ks1322

+0

Kiểm tra dự án .lib cho các tùy chọn/Yu và/Z7. –

Trả lời

7

Đặt "Use Library Dependency Inputs" trong trình liên kết Trang thuộc tính chung cho dự án của bạn. Điều đó sẽ liên kết các tệp .obj riêng lẻ từ tệp phụ thuộc .lib thay vì .lib, có thể có một số tác dụng phụ khác nhau.

+0

Tôi đồng ý, cài đặt này rất hữu ích cho việc gia nhập liên kết. –

+1

Có - điều này trả lời câu hỏi trực tiếp. Tôi đã từng sử dụng một sản phẩm tên là Xoreax Incredibuild với Visual Studio 2003; nó có một tính năng được gọi là "Incredilink" đã làm chính xác điều này. Nó có tác động lớn đến việc giảm thời gian xây dựng. Dường như chức năng đó đã được kéo trực tiếp vào Visual Studio 2005. –

+0

@MSN Cảm ơn bạn. Kiểu dự án của tôi là dự án MakeFile. Không có trang thuộc tính Trình liên kết trong loại dự án này. Tôi có thể đặt thuộc tính này không? Hoặc vượt qua nó để liên kết dòng lệnh? Dù sao +1 cho câu trả lời. – ks1322

2

Tôi sẽ cung cấp cho bạn một loại câu trả lời khác. Phần cứng.

Môi trường phát triển của bạn là gì? Có anyway để có được RAM nhiều hơn hoặc để đưa dự án của bạn vào một Solid State Drive? Tôi thấy rằng việc sử dụng một ổ SSD đã tăng tốc thời gian liên kết của tôi lên một đơn hàng lớn về các dự án làm việc của tôi. Giúp đỡ một chút cho thời gian biên dịch, nhưng liên kết là rất lớn. Bắt một hệ thống nhanh hơn của khóa học cũng đã giúp.

+0

+1 cho giải pháp phần cứng. SSD sẽ tăng tốc. Gần -1 cho các đề xuất khác như RAM (mức độ lớn nên là một dự án liên kết đòi hỏi nhiều hơn 2-4-6 GB RAM chính thống?) Hoặc hệ thống nhanh hơn (ý bạn là gì?) –

+0

Bạn sẽ ngạc nhiên về những gì loại hệ thống mọi người cố gắng mã trên @Andy. Khi tôi nâng cấp từ một hộp lõi kép 2Gig RAM WinXP lõi kép lên hộp lõi tứ 8gig Win7, mọi thứ trở nên nhanh hơn một chút. Không phải là một sự gia tăng lớn như SSD, nhưng một sự khác biệt đáng nói đến. –

+0

+1 để lưu trữ SSD – ks1322

0

Nếu tôi hiểu chính xác (sau khi sử dụng Visual Stuio trong vài năm), tính năng liên kết gia tăng không hoạt động đối với các tệp đối tượng là một phần của thư viện tĩnh.

Một cách để giải quyết vấn đề này là cơ cấu lại giải pháp của bạn để dự án ứng dụng của bạn chứa tất cả các tệp nguồn.

+0

Cảm ơn bạn. Bạn có thể cung cấp liên kết đến MSDN hoặc một số tài nguyên khác để xác nhận điều này không? Tôi muốn chắc chắn rằng liên kết gia tăng là không thể với các tập tin đối tượng từ libs tĩnh. – ks1322

+0

Xin lỗi, không, điều này dựa trên kinh nghiệm của riêng tôi khi làm việc với các công cụ. – Lindydancer

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