2010-04-12 54 views
13

Tôi đã sử dụng một vài trình thu thập thông tin trong quá khứ và không bao giờ tìm thấy chúng một cách dễ dàng. Có lẽ tôi đã chọn những người xấu, có lẽ tôi đã không thực sự biết những gì tôi đã mong đợi! Nhưng tôi muốn biết nếu có bất kỳ profilers 'tiêu chuẩn' mà chỉ đơn giản là thả vào và làm việc? Tôi không tin rằng tôi cần các báo cáo chi tiết tốt, chỉ để nhặt những đốm đen lớn. Dễ sử dụng là quan trọng hơn với tôi vào thời điểm này.Trình biên dịch C++ rất dễ (VC++) là gì?

Đó là VC++ 2008 chúng tôi đang sử dụng (tôi chạy phiên bản chuẩn cá nhân). Tôi không cho rằng có bất kỳ công cụ trong IDE cho điều này, tôi không thể nhìn thấy bất kỳ từ nhìn vào các menu chính?

+0

xem http://stackoverflow.com/questions/67554/whats-the-best-free-c-profiler-for-windows-if-there-are – SjB

Trả lời

10

VS được xây dựng trong:

Nếu bạn có đội ấn bản mà bạn có thể sử dụng Visual Studio profiler.


tùy chọn khác:

Otherwise check this thread.


Tạo riêng của bạn một cách dễ dàng:

Cá nhân tôi sử dụng một nội được xây dựng dựa trên một API Win32 QueryPerformanceCounter. Bạn có thể làm một cái gì đó tốt đẹp và dễ sử dụng trong một trăm dòng mã hoặc ít hơn.

Quy trình rất đơn giản: tạo macro ở đầu mỗi chức năng mà bạn muốn cấu hình được gọi là PROFILE_FUNC() và sẽ thêm vào số liệu thống kê được quản lý nội bộ. Sau đó, có một macro được gọi là PROFILE_DUMP() sẽ đổ kết quả đầu ra vào tài liệu văn bản.

PROFILE_FUNC() tạo đối tượng sẽ sử dụng RAII để ghi lại lượng thời gian cho đến khi đối tượng bị hủy. Cả hàm tạo của đối tượng RAII này và hàm hủy sẽ gọi QueryPerformanceCounter. Bạn cũng có thể để lại các dòng này trong mã của mình và kiểm soát hành vi thông qua #define PROFILING_ON

+0

Đang thử Buồn ngủ, chưa hoàn toàn chắc chắn về điều đó. –

+1

Tôi ghét cái cách Microsoft lấy một công cụ tuyệt vời (Visual Studio Professional) và có những tính năng tuyệt vời như profiler hoàn toàn ngoài tầm với của tôi. Vì vậy, thay vì nhận được một đảm bảo $ 600 từ tôi, tôi sẽ chỉ sử dụng mingw và sử dụng thử và sai. –

+0

@ Chris: Tôi theo nghĩa đen * không thể tin được * ý thức về quyền lợi của bạn. MS cung cấp một trình biên dịch và IDE tối ưu hóa xuất sắc với giá $ 0, và người dùng vẫn rên rỉ. Bạn nhận ra rằng họ cần phải giữ * một số tính năng mong muốn trong phiên bản freebie để mọi người sẽ mua Pro, đúng không? –

2

Tôi đã sử dụng lt prof trong quá khứ để chạy nhanh ứng dụng C++ của mình. Nó hoạt động khá dễ dàng và chạy với một chương trình biên dịch, không cần và mã nguồn móc hoặc tinh chỉnh. Có một phiên bản dùng thử tôi tin.

+0

++ Tôi chỉ cần theo liên kết đó, và có vẻ đầy hứa hẹn. Nó hoạt động rõ ràng bằng cách lấy mẫu ngăn xếp và cho độ phân giải ở cấp độ dòng. Tôi không thể biết liệu nó có cho phép các mẫu trong quá trình I/O hoặc chặn khác, cho phép phát hiện I/O không cần thiết. –

+1

Tôi vừa thử LTProf. Điều tôi thích là nó cung cấp phần trăm mức dòng, và nó lấy mẫu trong I/O (Yay !!). Sau đó, tôi rất buồn khi thấy rằng không có cách nào để bật/tắt lấy mẫu theo cách thủ công, như với phím nóng. Do đó, nếu một chương trình tương tác, không có cách nào để nói "lấy mẫu NGAY", không phải khi nó đang chờ người dùng nhập vào. –

22

tôi đề nghị một phương pháp rất đơn giản (mà tôi học được từ việc đọc bài viết Mike Dunlavey 's trên SO):

Chỉ cần tạm dừng chương trình.

Thực hiện nhiều lần để lấy mẫu hợp lý. Nếu một chức năng cụ thể đang lấy một nửa thời gian thực hiện chương trình của bạn, tỷ lệ cược là bạn sẽ nắm bắt nó trong hành động rất nhanh chóng.

Nếu bạn cải thiện hiệu suất của hàm đó lên 50% thì bạn vừa cải thiện thời gian thực hiện tổng thể thêm 25%. Và nếu bạn phát hiện ra rằng nó thậm chí không cần thiết ở tất cả (tôi đã tìm thấy một số trường hợp như vậy trong thời gian ngắn tôi đã sử dụng phương pháp này), bạn vừa cắt giảm thời gian thực hiện một nửa.

Tôi phải thú nhận rằng lúc đầu tôi khá hoài nghi về hiệu quả của cách tiếp cận này, nhưng sau khi thử nó trong một vài tuần, tôi bị mắc kẹt.

+10

++ Vâng, tôi e rằng tôi đã tạo ra một dịch hại của chính mình để quảng cáo kỹ thuật đó, nhưng darn nó, nó hoạt động. (Điều quan trọng là nhìn vào ngăn xếp cuộc gọi. Đôi khi mọi người nói "Đó là trong một số thói quen hệ thống - những gì tốt là?" Khi vấn đề là hiển nhiên một vài cấp độ lên.) –

+0

Tôi đã hoài nghi. Nhưng, tôi có thể xác nhận rằng điều này thực sự hiệu quả. Đặc biệt, nếu chương trình của bạn hoạt động chậm đáng chú ý. Hay nhất của tất cả, không cần mã móc. –

3

Tôi luôn sử dụng AMD CodeAnalyst, tôi thấy nó khá dễ sử dụng và mang lại kết quả thú vị. Tôi luôn sử dụng hồ sơ dựa trên thời gian, trong đó tôi thấy rằng nó hợp tác tốt với thông tin gỡ lỗi của ứng dụng của tôi, cho phép tôi tìm thời gian được sử dụng ở quy trình, hướng dẫn C++ và cấp hướng dẫn lắp ráp đơn.

2

Cách đơn giản (và miễn phí) để cài đặt trình gỡ rối Windows (cdb/windbg), đặt bp ở địa điểm ưa thích và đưa ra lệnh wt ("Dấu vết và dữ liệu xem"). Hãy xem MSDN để biết thêm thông tin.

+0

++ Tôi đã sử dụng windbg lứa tuổi trước đây, và dựa vào phương pháp Ctrl-C. Sau đó, nếu tôi muốn chạy chậm, tôi sẽ sử dụng Dữ liệu xem, như bạn đề xuất. –

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