结论:下标访问最快,其次到C++11新特性方式,最慢的是迭代器访问
贴代码:
#include <iostream>
#include <time.h>
#include <vector>
using namespace std;
int main()
{
vector<int> pri(10000,1);
time_t begin,end;
double ret=0;
begin = clock();
for(auto iter=pri.begin();iter!=pri.end();iter++)
*iter+1;
end = clock();
ret=double(end-begin);
cout<<"1runtime: "<<ret<<" "<<endl;
ret = 0;
begin = clock();
for(auto iter=pri.begin();iter!=pri.end();iter++)
*iter+1;
end = clock();
ret=double(end-begin);
cout<<"2runtime: "<<ret<<" "<<endl;
ret = 0;
begin = clock();
for(int i=pri.size()-1;i>=0;i--)
pri[i]+1;
end = clock();
ret=double(end-begin);
cout<<"5runtime: "<<ret<<" "<<endl;
ret = 0;
begin = clock();
for(auto iter=pri.begin();iter!=pri.end();iter++)
*iter+1;
end = clock();
ret=double(end-begin);
cout<<"3runtime: "<<ret<<" "<<endl;
ret = 0;
begin = clock();
for(int i=pri.size()-1;i>=0;i--)
pri[i]+1;
end = clock();
ret=double(end-begin);
cout<<"6runtime: "<<ret<<" "<<endl;
ret = 0;
begin = clock();
for(auto iter=pri.begin();iter!=pri.end();iter++)
*iter+1;
end = clock();
ret=double(end-begin);
cout<<"4runtime: "<<ret<<" "<<endl;
ret = 0;
begin = clock();
for(int gg:pri)
gg+1;
end = clock();
ret=double(end-begin);
cout<<"6runtime: "<<ret<<" "<<endl;
ret = 0;
begin = clock();
for(int gg:pri)
gg+1;
end = clock();
ret=double(end-begin);
cout<<"7runtime: "<<ret<<" "<<endl;
return 0;
}
贴输出结果:
1runtime: 155
2runtime: 174
5runtime: 26
3runtime: 159
6runtime: 19
4runtime: 148
6runtime: 67
7runtime: 66
单一过程测试多次是因为cpu波动,希望测出稳定的结果