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");
}
我正在使用 VS2010,发现了一些可笑的性能问题。上面的代码在调试和发布版本 (ctrl+f5) 中运行良好,但是当附加调试器时 (f5),dtor 对 unique_ptr 类的调用速度非常慢。结果机器代码已经相当优化,所以我不认为这是编译器问题而不是调试器问题,但我不知道如何处理它。我的问题是
- 这个问题能在你的机器上重现吗?
- 这种行为的原因是什么?
- 有什么解决方法吗?