Tôi có một dự án C++ kế thừa mất một thời gian khó chịu để xây dựng (vài phút, ngay cả đối với những thay đổi nhỏ), và tôi thấy phần lớn thời gian đã được liên kết.Visual C++ 2008: Tìm nguyên nhân của thời gian liên kết chậm
Dự án đã sử dụng các tiêu đề được biên dịch trước và biên dịch gia tăng. Tôi đã bật tính năng "/ thời gian" tham số dòng lệnh với hy vọng tôi sẽ biết thêm chi tiết về những gì đang chậm lại các mối liên kết, và nhận được kết quả như sau:
1>Linking...
1> MD Merge: Total time = 59.938s
1> Generate Transitions: Total time = 0.500s
1> MD Finalize: Total time = 7.328s
1>Pass 1: Interval #1, time = 71.718s
1>Pass 2: Interval #2, time = 8.969s
1>Final: Total time = 80.687s
1>Final: Total time = 80.953s
Có cách nào để biết thêm chi tiết về mỗi các bước này? Ví dụ: Tôi muốn tìm xem liệu họ có dành hầu hết thời gian liên kết đến một tệp .lib hoặc .obj cụ thể không.
Ngoài ra, có bất kỳ tài liệu nào giải thích những gì từng bước này thực hiện không?
Chỉ để biết thông tin, có bao nhiêu tệp .cpp mà chúng ta đang nói đến ở đây? Để tham khảo vui, chúng tôi đã có một ứng dụng một vài năm trước đây mất 12h để liên kết (yep, một thư viện humongous). Rất may nó đã được chia nhỏ trong vài chục thành phần và phần cứng bây giờ tốt hơn;) –
180 tệp trải rộng trên 10 dự án + phụ thuộc vào 8 tệp .lib bên ngoài (MFC + các thư viện độc quyền khác); do đó, đó là một số lượng hợp lý của các tập tin trong quan điểm của tôi. Tuy nhiên, cấu trúc có thể được cải thiện bằng cách tách một số dự án. (12h thật khủng khiếp, làm cách nào bạn quản lý để hoàn thành công việc?) – ckarras
Phiên bản Whcich? Bạn đã bật Tối ưu hóa mã thời gian liên kết hoặc Tối ưu hóa hướng dẫn Profiler chưa? – peterchen