我对 boost 向量和 std 向量做了一个有趣的测试,如下所示
int N = 10000;
{
boost::timer::auto_cpu_timer t;
std::vector<int> v;
for (int i = 0; i < N; ++i)
{
v.insert(v.begin(), i);
}
}
{
boost::timer::auto_cpu_timer t;
boost::container::vector<int> v;
for (int i = 0; i < N; ++i)
{
v.insert(v.begin(), i);
}
}
win32发布,vc2010编译,/O2 /Oy-
对于 N = 10000
对于标准向量:0.140849s 墙,0.140401s 用户 + 0.000000s 系统 = 0.140401s CPU (99.7%)
f 提升向量:0.056174s 墙,0.062400s 用户 + 0.000000s 系统 = 0.062400s CPU (111.1%)
对于 N = 100,000
标准:14.050757s 墙,14.055690s 用户 + 0.000000s 系统 = 14.055690s CPU (100.0%)
提升:5.585048s 墙,5.584836s 用户 + 0.000000s 系统 = 5.584836s CPU (100.0%)
将 Reserve(N) 添加到两者时,CPU 时间几乎没有变化。
他们之间有什么区别吗?Boost比std快得多,为什么?谢谢。
检查 sizeof(),std::vector 16,而 boost::container::vector 12。