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)时,unique_ptr类的dtor调用变得难以忍受地缓慢。生成的机器代码非常优化,因此我不认为是编译器问题,而是调试器的问题,但我不知道该怎么处理它。我的问题是:
- 您的计算机上是否能够重现此问题?
- 这种行为的原因是什么?
- 有没有任何解决方法?
printf
,而不是每次循环迭代都有一个。 - Adam Rosenfield