2009-02-17 42 views
6

Tôi có một mã C++ mà tôi đang biên dịch bằng VC7 và mất nhiều thời gian để xây dựng nó. Có cách nào tôi có thể hồ sơ nó và tìm thấy lý do tại sao nó là dành thời gian để xây dựng?Thời gian biên dịch hồ sơ

Trả lời

9

Trong Visual Studio 2008, có một cài đặt để bật thời gian xây dựng. Nó có thể có mặt ở đó trong VC7 cũng ...

Tools/Options/Projects and Solutions/VC++ Project Settings/Build Timing:Yes

này áp dụng cho các dự án C++, trong đó (như của VS2008) không sử dụng MSBuild. Đối với dự án MSBuild dựa trên (chẳng hạn như C#), bạn muốn tăng tính cách rườm rà:

Tools/Options/Projects and Solutions/Build and Run/MSBuild project build output verbosity

Theo mặc định, nó được thiết lập để "tối thiểu".

3

Mã nguồn trên mạng phải không? Điều này đôi khi làm chậm quá trình biên dịch.

+0

Có và nó nằm dưới sự kiểm soát nguồn rõ ràng. – Naveen

+0

Sử dụng chế độ xem ảnh chụp cục bộ để tạo. –

+0

Không bao giờ sử dụng chế độ xem động cho mã nguồn. đó là cách rắc rối hơn giá trị của nó. – shoosh

-1

Sử dụng precompiled headers

+0

Thật không may, các mẫu chỉ được tạo bởi các đơn vị dịch hoàn chỉnh, không phải trong các tiêu đề được biên dịch trước. Khi tôi cố gắng sử dụng các tiêu đề biên dịch sẵn cho dự án mẫu nặng của tôi, chúng chỉ cải thiện thời gian biên dịch từ 0-5% (dù có bật hoặc tắt tối ưu hóa). Nếu C++ 17 mang đến cho chúng ta các mô-đun, chúng có thể giúp ... – idupree

1

Tôi đoán là sẽ rất khó để có được kết quả hữu ích từ lược tả. Bạn có thể xem xét thời gian tạo của từng tệp .obj và kiểm tra xem có bất kỳ tệp nào đặc biệt chậm hay không, nhưng tôi nghi ngờ điều này là đúng.

Bạn đã trải qua các tùy chọn trình biên dịch như các tiêu đề được biên dịch trước để xem những cải tiến nào cung cấp? Tương tự, tắt trình tối ưu hóa ở nơi không yêu cầu có thể tăng tốc độ xây dựng đáng kể. Lời khuyên của tôi là dành chút thời gian để thử một vài kịch bản 'nếu như'.

4

Nếu mã có định dạng mẫu, thì bạn có thể thử làm hồ sơ trình bày mẫu. Steven Watanabe đã đưa ra các profiler và nếu tôi nhớ chính xác nó đã được coi là làm việc với VS (không biết phiên bản).

+0

+1, các mẫu có thể đạt thời gian biên dịch tồi tệ, ngay cả với các tiêu đề được biên dịch trước –

1

Nếu mã của bạn sử dụng rộng rãi mẫu, bạn có thể quan tâm đến Templight, một công cụ do nhóm nghiên cứu hungarian phát triển để gỡ lỗi và lập sơ đồ siêu mẫu C++ (paper). Có vẻ như rất hứa hẹn, nhưng tôi không chắc chắn công cụ có sẵn để tải xuống hay không ...

+1

Templight đang trên đường trở thành tính năng dựng sẵn trong tiếng kêu. Phiên bản hiện tại và công cụ trực quan có thể tìm thấy tại đây: http://plc.inf.elte.hu/templight/ – jmihalicza

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