【发布时间】:2013-05-28 05:04:27
【问题描述】:
我有以下代码:
main() {
vector<int> v (1000,0);
list<int> l (1000,0);
clock_t begin,end;
cout <<"Vector size: "<<v.size()<<endl;
cout <<"List size: "<<l.size()<<endl;
begin=clock();
for (int i=0;i<1000000;i++)
for (vector <int>::iterator it=v.begin();it!=v.end();it++);
end=clock();
cout <<v[0]<<endl;
cout << "Vector iteration: " << (double)(end-begin)/CLOCKS_PER_SEC <<endl;
begin=clock();
for (int i=0;i<1000000;i++)
for (list <int>::iterator it=l.begin();it!=l.end();it++);
end=clock();
list <int>::iterator it=l.begin();
cout << *it <<endl;
cout << "List iteration: " << (double)(end-begin)/CLOCKS_PER_SEC <<endl;
}
我得到的结果是向量迭代(大约)18.3 秒,列表迭代是 (大约)11.7 秒。这怎么可能?我的测量有问题吗?
感谢您的帮助!
【问题讨论】:
-
我在 O3 上得到
vector为 0 和list为 1.707。 -
我得到的结果与 Jerry 基本相同。启用调试模式后,我发现 List 比向量慢一点(但我必须将周期数减少到 1000 才能在合理的时间内完成它。)
-
这是一个免费的-1,用于在没有优化的情况下进行基准测试。
标签: c++ performance stl