好的,让我们重新开始
我试图从 std::vector 中删除一个元素,由于某种原因,只有当我跨过时它在释放模式下才会非常慢。
这是完整的来源:
#include <iostream>
#include <vector>
#include <windows.h>
class data
{
public:
int i;
};
void Test(int n)
{
std::vector<data> v;
data d;
for (int i=0; i<n; ++i)
{
v.push_back(d);
}
ULONGLONG nTick = GetTickCount64();
v.erase(v.begin()+1);
std::cout << n << " " << GetTickCount64() - nTick << std::endl;
}
int main()
{
Test(10000);
Test(100000);
Test(1000000);
return 0;
}
当我越过线
v.erase(v.begin()+1);
它分别在发布
10000 -> 2 seconds
100000 -> 18 seconds
1000000 -> 182 seconds
但是对于所有这些来说,调试几乎是即时的吗?