根据测试结果来看,Debug模式下索引访问更快一些,Release模式下两者一样快,都是0s。这个结果出乎我的意料,但是又是一个希望看到的结果,毕竟我目前的应用场景索引会带来更多的方便。
我测试的平台是VS2012,运行在debug模式下,分别测试了访问1000000和10000000个位置。
测试代码
#include <iostream>
#include <vector>
#include <ctime>
#define MAX 10000000
using namespace std;
int main(){
int t;
double stime, ftime;
vector<int> vi(MAX, 10);
vector<int>::iterator iter;
stime = clock();
for(size_t i=0; i<MAX; i++) t = vi[i];
ftime = clock();
cout<<"time: "<<(ftime-stime)/CLOCKS_PER_SEC<<"s"<<endl;
stime = clock();
for(iter=vi.begin(); iter!=vi.end(); iter++) t = *iter;
ftime = clock();
cout<<"time: "<<(ftime-stime)/CLOCKS_PER_SEC<<"s"<<endl;
vi.clear();
system("PAUSE");
return 0;
}
测试结果:
1000000
10000000