struct test_struct
{
test_struct() {}
~test_struct() {}
};
#include <vector>
#include <memory>
#include <cstdio>
int main()
{
printf("ctor begin\n");
{
std::vector<std::unique_ptr<test_struct>> test_vec;
const int count = 100000;
for (auto i = 0; i < count; i++) {
test_vec.emplace_back(new test_struct);
}
printf("dtor begin\n");
}
printf("dtor end\n");
}
Tôi đang sử dụng VS2010 và tìm thấy một số vấn đề hiệu suất vô lý. Đoạn mã trên hoạt động tốt cả trong debug và release build (ctrl + f5), nhưng khi debugger được đính kèm (f5), dtor call cho class unique_ptr không thể chạy chậm. Mã máy kết quả là khá tối ưu, vì vậy tôi không nghĩ rằng đó là vấn đề trình biên dịch chứ không phải là trình gỡ lỗi, nhưng tôi không biết cách xử lý nó. Câu hỏi của tôi làGọi tốc độ độc đáo chậm khi có trình gỡ lỗi được đính kèm (msvc)
- Sự cố này có thể được sao chép trên máy của bạn không?
- Lý do của hành vi này là gì?
- Có cách giải quyết nào không?
Thử xả sau mỗi lần in. – Pubby
@Pubby: Điều đó sẽ không tạo ra sự khác biệt, chỉ có 3 'printf's tổng, không phải là một cho mỗi vòng lặp lặp lại. –
Tôi đã có thể tái tạo điều này trên ấn bản express VS2010 của mình. – RedX