Làm cách nào để tìm ra nơi trình biên dịch dành thời gian của nó?Làm thế nào để tìm ra nơi trình biên dịch dành thời gian của nó?
Quá trình xây dựng của tôi quá chậm, tôi đã sử dụng RAMdisk cho các tệp tạm thời VC++ và nó không tạo ra bất kỳ sự khác biệt nào. (Tôi có một ổ SSD, vì vậy tôi mong đợi không có sự khác biệt.)
Hầu hết các tệp C++ đơn lẻ trong dự án này mất khoảng. 2 giây để biên dịch mà có vẻ khủng khiếp (như tôi cũng không có bất kỳ song song trong dự án vì tôi đang sử dụng VS2005).
Làm cách nào để tối ưu hóa điều này? Không tối ưu hóa mà không có hồ sơ, nhưng làm thế nào để tôi hồ sơ trình biên dịch?
Lưu ý: Đây không phải là thực sự hữu ích:
- Profiling the C++ compilation process
- Displaying build times in Visual Studio? (Nó không phải là hoàn toàn không có công đức dù ... nếu bạn làm một bộ sưu tập đơn tập tin, thay vì toàn bộ dự án, nó sẽ hiển thị thời gian thực hiện cho một tập tin duy nhất: Bằng cách đó tôi thấy rằng khá một số tác phẩm ở đây mất hơn 5 giây, một số thậm chí 10 giây khi biên soạn độc lập)
Hãy thêm nhận xét hay: Bạn có nhiều mẫu không? Các tệp của bạn ở mức trung bình bao nhiêu? Bạn đã chọn chỉ bao gồm tối thiểu các tiêu đề cần thiết
Không, tôi không làm như vậy. Tôi có thể (và pro'lly sẽ) tất nhiên. Tôi có thể tìm thấy điều gì đó, nhưng tất cả đều là đầu cơ và dùng thử và lỗi!
"Mọi người" cho bạn biết rằng bạn chỉ nên tối ưu hóa sau khi đo/lược tả, nhưng khi tối ưu hóa thời gian biên dịch, chúng tôi sẽ quay lại dùng thử lỗi &?
Lưu ý: Các đề xuất "hack" từ những ý kiến với __TIME__
không không làm việc, ít nhất là không trên Visual C++, vì (như the docs nhà nước): Các gần đây nhất thời gian biên dịch của tệp nguồn hiện tại. Thời gian là một chuỗi chữ có dạng hh: mm: ss. - Tôi đoán ít nhất có thể có được thời gian cho các đơn vị biên dịch đơn với con tem này, nhưng nó không giúp đi sâu vào một đơn vị biên dịch.
Bạn có nhiều mẫu không? Các tệp của bạn ở mức trung bình bao nhiêu? Bạn có kiểm tra chỉ bao gồm tối thiểu các tiêu đề cần thiết không? – stefan
bạn có đang sử dụng các tiêu đề được biên dịch trước không? –
@MartinBa Với "chỉ bao gồm tối thiểu cần thiết của tiêu đề", nó không phải là cố gắng và lỗi, đó là thực hành tốt. Về kích thước tệp trung bình: Trình biên dịch cần phải phân tích cú pháp toàn bộ nội dung, vì vậy rõ ràng là có giới hạn về hiệu ứng được cung cấp bởi kích thước tệp. Tôi muốn đề xuất một hệ thống xây dựng gia tăng trong đó chỉ thay đổi các tập tin được biên dịch lại. Sau đó, bạn thực sự không phải lo lắng về thời gian biên dịch dài. – stefan