-1
我有以下代碼快:爲什麼列表迭代比矢量迭代C++
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。 – chris
我得到的結果與傑瑞基本相同。在啓用調試模式的情況下,我得到列表比這個向量稍慢(但我必須將週期數減少到1000,以在合理的時間內完成它。) – ChaosCakeCoder
這是免費的-1,用於在沒有優化的情況下進行基準測試。 –