2009-07-10 24 views

Trả lời

5

"Công cụ" -> "Tùy chọn" -> "Dự án và giải pháp" -> "Cài đặt dự án VC++"

Chọn "Thời gian tạo bản dựng".

+1

Nghiêm túc, điều đó thật dễ dàng? Tôi vẫn thích giải pháp của tôi! :) –

+0

Thời gian xây dựng cho thời gian cho các quy trình xây dựng khác nhau, không cho mỗi tệp. –

0

Đã lâu rồi kể từ khi tôi sử dụng phiên bản trình biên dịch đó, nhưng tôi nhớ nó sẽ in tên của tệp mà nó biên dịch vào bàn điều khiển (khi bạn sử dụng xây dựng dòng lệnh). Nếu đó là trường hợp, sau đó bạn có thể viết một chương trình nào sau đây:

  1. CreateProcess trên trình biên dịch dòng lệnh, chuyển hướng stdout vào một đường ống
  2. đọc từ các đường ống, tìm kiếm tên tập tin nguồn
  3. mỗi lần một tên tập tin nguồn được xem, lưu ý các dấu thời gian hiện tại
  4. Khi ống được đóng lại, in ra lần chụp cho mỗi tập tin xây dựng

trong khi phương pháp này có thể được phát triển trong C++, nó sẽ có thể dễ dàng hơn khi sử dụng một công cụ như Perl để triển khai nó.

+0

nhờ greg thats một cách tiếp cận tốt đẹp ... –

+0

wat về viết một kịch bản Python ?? –

+0

Chắc chắn, Python sẽ không kém phần phù hợp với điều này. –

6

Tôi đang sử dụng Visual Studio 2010 nhưng các phiên bản khác của Visual Studio có thể có nội dung tương tự. Trong VS2010 bạn có thể thêm vào các tùy chọn dòng lệnh/Bt + để in thời gian thực hiện để biên dịch từng tệp. Vì vậy, trong một thuộc tính của dự án trong "Thuộc tính cấu hình" -> "C/C++" -> "Dòng lệnh" -> "Tùy chọn bổ sung" thêm/Bt +

Đặt tùy chọn/Bt + ở đầu ra (được ghi trong file log) dòng như sau:

time(c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\c1.dll)=0.05110s < 25394686804 - 25394831194 > BB [C:\not-important\nlopt-2.4.2\direct\DIRect.c] 

thông tin thêm về tùy chọn này ở https://blogs.msdn.microsoft.com/vcblog/2010/04/01/vc-tip-get-detailed-build-throughput-diagnostics-using-msbuild-compiler-and-linker/ mà tôi tìm thấy nhờ vào câu trả lời này https://stackoverflow.com/a/3513043/453436

có rất nhiều cách để trích xuất các dòng thời gian tùy thuộc vào những gì công cụ bạn có sẵn cho bạn. Tôi đã làm nó dưới một vỏ bash với một sự kết hợp của tìm, grep và perl. Sau đây sẽ cung cấp cho bạn thời gian biên dịch được sắp xếp với thời gian dài nhất trước.

find . -name '*.log' | xargs grep time | perl -ne '$_ =~ /=(.*?)s.*\[(.*)\]/; print "$1 $2\n";' |sort -rn 
+0

Cảm ơn! Tôi sử dụng VS2013 và điều này thực sự cho thấy thời gian biên dịch cho mỗi tập tin. Sử dụng tùy chọn "Xây dựng thời gian" như được đề cập trong câu trả lời khác chỉ hiển thị thời gian biên dịch/liên kết cho mỗi dự án. – opetroch

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