2013-03-26 31 views
7

Giai đoạn ban đầu của chương trình của tôi tải một lượng đáng kể dữ liệu vào các thùng chứa STL. Tôi thấy rằng phải mất vài phút trước khi tôi có thể đến được món thịt thật của chương trình của tôi.Các hậu quả tiêu cực của việc tắt gỡ lỗi là gì? (_NO_DEBUG_HEAP == 1)

Sau khi tìm kiếm, tôi thấy rằng tôi có thể đặt _NO_DEBUG_HEAP == 1 trong thuộc tính cấu hình VS2012 của tôi-> Gỡ lỗi-> Biến môi trường ... tắt sử dụng cửa sổ gỡ lỗi heap. Điều này giúp tôi cải thiện tốc độ gỡ lỗi gấp 10 lần. Tôi chưa tìm thấy bất kỳ mô tả những gì tôi gỡ lỗi chức năng tôi bị mất bằng cách làm như vậy.

Tóm lại: kiểm tra nào đã được hoàn thành và thông tin gỡ lỗi nào đã được tạo bằng cách sử dụng cửa sổ gỡ lỗi heap?

Cảm ơn bạn.

+0

Tôi đã không phải gỡ lỗi một lỗi heap tham nhũng heisenbug trong 5 năm qua, nhờ vào đống gỡ lỗi. Chỉ đưa ra điều này nếu bạn có lưng của bạn vào tường. Xem xét _HAS_ITERATOR_DEBUGGING = 0. Và tất nhiên gỡ lỗi chỉ với một tập con của dữ liệu. –

Trả lời

3

Heap gỡ lỗi tác động đến hiệu suất theo hai cách:

Đầu tiên, nó thêm kiểm tra tính toàn vẹn heap trong hoạt động đống. Tôi đã không tìm thấy chi tiết về các kiểm tra này, nhưng một giả định rằng trên mỗi phân bổ hoặc miễn phí, nó liên quan đến việc xác minh tính toàn vẹn của các cấu trúc dữ liệu được sử dụng để quản lý heap.

Thứ hai, nó vô hiệu hóa tùy chọn phân đoạn thấp (LFH). Trong bản phát hành bản phát hành, bạn sẽ nhận được LFH theo mặc định. Trong bản dựng gỡ lỗi, bạn không - trừ khi bạn sử dụng _NO_DEBUG_HEAP. Đây không nhất thiết là một hình phạt tốc độ, nhưng nó có thể là.

Có các đầu mối trong tài liệu cho HeapSetInformation. Lưu ý rằng các thư viện thời gian chạy C và C++ cung cấp quản lý bộ nhớ được xây dựng trên đầu trang của các API heap hệ thống, và chúng cũng có các chế độ gỡ lỗi và không gỡ lỗi có thể ảnh hưởng đến hiệu năng. Quay lại đầu trang |||| Có more detailed documentation về những gì CRT gỡ lỗi thực hiện. Bạn có thể kiểm tra và xem liệu việc tắt gỡ lỗi CRT có đủ để giúp bạn tăng hiệu suất đáng kể mà không gây rối với chế độ gỡ lỗi của quá trình heap hay không.

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