vector/list/set/map 遍历耗时统计
#include<Windows.h>#include <iostream>#include<fstream>#include<vector>#include<list>#include<set>#include <map>#include <string>using namespace std;#define NUM1 10 //外层循环10次#define NUM2 100000000 //对于int、dword的1亿次i++和++i#define NUM3 100000//对与包含10万个元素容器的iter++和++iter#ifdef _DEBUG#define _FNAME "debug_"#else#define _FNAME "release_"#endiftypedef struct _ElemType1{DWORD dw;_ElemType1(DWORD _dw=0):dw(_dw){}bool operator<(_ElemType1 const &t1) const{return this->dw<t1.dw;}}ElemType1;typedef struct _ElemType2{string str;_ElemType2(string _str=""):str(_str){}bool operator<(_ElemType2 const &t1) const{return this->str<t1.str;}}ElemType2;void test1_int_i(ofstream &of);void test1_dword_i(ofstream &of);void test2_vec_type1(ofstream &of);void test2_vec_type2(ofstream &of);void test3_list_type1(ofstream &of);void test3_list_type2(ofstream &of);void test4_set_type1(ofstream &of);void test4_set_type2(ofstream &of);void test5_map_type1(ofstream &of);void test5_map_type2(ofstream &of);void test1_int_i(ofstream &of){volatile int i=0,j=0;DWORD dw1,dw2,total=0;cout<<"int类型:"<<endl;of<<"int类型:"<<endl;cout<<"i++测试:"<<endl;of<<"i++测试:"<<endl;for(;j<NUM1;++j){dw1 = ::GetTickCount();while (i<NUM2){i++;}dw2 = ::GetTickCount();i=0;cout<<j<<" : "<<dw2-dw1<<endl;of<<j<<" : "<<dw2-dw1<<endl;total+=dw2-dw1;}cout<<"总消耗:"<<total<<endl;of<<"总消耗:"<<total<<endl;cout<<"平均消耗:"<<float(total)/NUM1<<endl;of<<"平均消耗:"<<float(total)/NUM1<<endl;cout<<endl;of<<endl;i = j = 0;total = 0;cout<<"++i测试:"<<endl;of<<"++i测试:"<<endl;for(;j<NUM1;++j){dw1 = ::GetTickCount();while (i<NUM2){++i;}dw2 = ::GetTickCount();i=0;cout<<j<<" : "<<dw2-dw1<<endl;of<<j<<" : "<<dw2-dw1<<endl;total+=dw2-dw1;}cout<<"总消耗:"<<total<<endl;of<<"总消耗:"<<total<<endl;cout<<"平均消耗:"<<float(total)/NUM1<<endl;of<<"平均消耗:"<<float(total)/NUM1<<endl;cout<<endl;of<<endl;}void test1_dword_i(ofstream &of){volatile DWORD i=0,j=0;DWORD dw1,dw2,total=0;cout<<"DWORD类型:"<<endl;of<<"DWORD类型:"<<endl;cout<<"i++测试:"<<endl;of<<"i++测试:"<<endl;for(;j<NUM1;++j){dw1 = ::GetTickCount();while (i<NUM2){i++;}dw2 = ::GetTickCount();i=0;cout<<j<<" : "<<dw2-dw1<<endl;of<<j<<" : "<<dw2-dw1<<endl;total+=dw2-dw1;}cout<<"总消耗:"<<total<<endl;of<<"总消耗:"<<total<<endl;cout<<"平均消耗:"<<float(total)/NUM1<<endl;of<<"平均消耗:"<<float(total)/NUM1<<endl;cout<<endl;of<<endl;i = j = 0;total = 0;cout<<"++i测试:"<<endl;of<<"++i测试:"<<endl;for(;j<NUM1;++j){dw1 = ::GetTickCount();while (i<NUM2){++i;}dw2 = ::GetTickCount();i=0;cout<<j<<" : "<<dw2-dw1<<endl;of<<j<<" : "<<dw2-dw1<<endl;total+=dw2-dw1;}cout<<"总消耗:"<<total<<endl;of<<"总消耗:"<<total<<endl;cout<<"平均消耗:"<<float(total)/NUM1<<endl;of<<"平均消耗:"<<float(total)/NUM1<<endl;cout<<endl;of<<endl;}DWORD g_dwFlag=0;void test2_vec_type1(ofstream &of){ElemType1 t1;vector<ElemType1> vec1(NUM3,t1);DWORD dw1,dw2,total=0;cout<<"vector,使用type1:"<<endl;of<<"vector,使用type1:"<<endl;cout<<"iter++测试:"<<endl;of<<"iter++测试:"<<endl;int i = 0,j=0;vector<ElemType1>::iterator iter;vector<ElemType1>::const_iterator citer;for(;i<NUM1;++i){iter = vec1.begin();dw1 = ::GetTickCount();while (iter!=vec1.end()){#ifdef NDEBUGg_dwFlag+=i;#endifiter++;}dw2 = ::GetTickCount();cout<<i<<" : "<<dw2-dw1<<endl;of<<i<<" : "<<dw2-dw1<<endl;total+=dw2-dw1;}cout<<"总消耗:"<<total<<endl;of<<"总消耗:"<<total<<endl;cout<<"平均消耗:"<<float(total)/NUM1<<endl;of<<"平均消耗:"<<float(total)/NUM1<<endl;cout<<endl;of<<endl;i=0;total=0;cout<<"++iter测试:"<<endl;of<<"++iter测试:"<<endl;for(;i<NUM1;++i){dw1 = ::GetTickCount();iter = vec1.begin();while (iter!=vec1.end()){#ifdef NDEBUGg_dwFlag+=i;#endif++iter;}dw2 = ::GetTickCount();cout<<i<<" : "<<dw2-dw1<<endl;of<<i<<" : "<<dw2-dw1<<endl;total+=dw2-dw1;}cout<<"总消耗:"<<total<<endl;of<<"总消耗:"<<total<<endl;cout<<"平均消耗:"<<float(total)/NUM1<<endl;of<<"平均消耗:"<<float(total)/NUM1<<endl;cout<<endl;of<<endl;i=0;total=0;cout<<"citer++测试:"<<endl;of<<"citer++测试:"<<endl;for(;i<NUM1;++i){dw1 = ::GetTickCount();citer = vec1.begin();while (citer!=vec1.end()){#ifdef NDEBUGg_dwFlag+=i;#endifciter++;}dw2 = ::GetTickCount();cout<<i<<" : "<<dw2-dw1<<endl;of<<i<<" : "<<dw2-dw1<<endl;total+=dw2-dw1;}cout<<"总消耗:"<<total<<endl;of<<"总消耗:"<<total<<endl;cout<<"平均消耗:"<<float(total)/NUM1<<endl;of<<"平均消耗:"<<float(total)/NUM1<<endl;cout<<endl;of<<endl;i=0;total=0;cout<<"++citer测试:"<<endl;of<<"++citer测试:"<<endl;for(;i<NUM1;++i){dw1 = ::GetTickCount();citer = vec1.begin();while (citer!=vec1.end()){#ifdef NDEBUGg_dwFlag+=i;#endif++citer;}dw2 = ::GetTickCount();cout<<i<<" : "<<dw2-dw1<<endl;of<<i<<" : "<<dw2-dw1<<endl;total+=dw2-dw1;}cout<<"总消耗:"<<total<<endl;of<<"总消耗:"<<total<<endl;cout<<"平均消耗:"<<float(total)/NUM1<<endl;of<<"平均消耗:"<<float(total)/NUM1<<endl;cout<<endl;of<<endl;}void test2_vec_type2(ofstream &of){ElemType2 t2;vector<ElemType2> vec1(NUM3,t2);DWORD dw1,dw2,total=0;cout<<"vector,使用type2:"<<endl;of<<"vector,使用type2:"<<endl;cout<<"iter++测试:"<<endl;of<<"iter++测试:"<<endl;int i = 0,j=0;vector<ElemType2>::iterator iter;vector<ElemType2>::const_iterator citer;for(;i<NUM1;++i){dw1 = ::GetTickCount();iter = vec1.begin();while (iter!=vec1.end()){#ifdef NDEBUGg_dwFlag+=i;#endifiter++;}dw2 = ::GetTickCount();cout<<i<<" : "<<dw2-dw1<<endl;of<<i<<" : "<<dw2-dw1<<endl;total+=dw2-dw1;}cout<<"总消耗:"<<total<<endl;of<<"总消耗:"<<total<<endl;cout<<"平均消耗:"<<float(total)/NUM1<<endl;of<<"平均消耗:"<<float(total)/NUM1<<endl;cout<<endl;of<<endl;i=0;total=0;cout<<"++iter测试:"<<endl;of<<"++iter测试:"<<endl;for(;i<NUM1;++i){dw1 = ::GetTickCount();iter = vec1.begin();while (iter!=vec1.end()){#ifdef NDEBUGg_dwFlag+=i;#endif++iter;}dw2 = ::GetTickCount();cout<<i<<" : "<<dw2-dw1<<endl;of<<i<<" : "<<dw2-dw1<<endl;total+=dw2-dw1;}cout<<"总消耗:"<<total<<endl;of<<"总消耗:"<<total<<endl;cout<<"平均消耗:"<<float(total)/NUM1<<endl;of<<"平均消耗:"<<float(total)/NUM1<<endl;cout<<endl;of<<endl;i=0;total=0;cout<<"citer++测试:"<<endl;of<<"citer++测试:"<<endl;for(;i<NUM1;++i){dw1 = ::GetTickCount();citer = vec1.begin();while (citer!=vec1.end()){#ifdef NDEBUGg_dwFlag+=i;#endifciter++;}dw2 = ::GetTickCount();cout<<i<<" : "<<dw2-dw1<<endl;of<<i<<" : "<<dw2-dw1<<endl;total+=dw2-dw1;}cout<<"总消耗:"<<total<<endl;of<<"总消耗:"<<total<<endl;cout<<"平均消耗:"<<float(total)/NUM1<<endl;of<<"平均消耗:"<<float(total)/NUM1<<endl;cout<<endl;of<<endl;i=0;total=0;cout<<"++citer测试:"<<endl;of<<"++citer测试:"<<endl;for(;i<NUM1;++i){dw1 = ::GetTickCount();citer = vec1.begin();while (citer!=vec1.end()){#ifdef NDEBUGg_dwFlag+=i;#endif++citer;}dw2 = ::GetTickCount();cout<<i<<" : "<<dw2-dw1<<endl;of<<i<<" : "<<dw2-dw1<<endl;total+=dw2-dw1;}cout<<"总消耗:"<<total<<endl;of<<"总消耗:"<<total<<endl;cout<<"平均消耗:"<<float(total)/NUM1<<endl;of<<"平均消耗:"<<float(total)/NUM1<<endl;cout<<endl;of<<endl;}void test3_list_type1(ofstream &of){ElemType1 t1;list<ElemType1> ls(NUM3,t1);DWORD dw1,dw2,total=0;cout<<"list,使用type1:"<<endl;of<<"list,使用type1:"<<endl;cout<<"iter++测试:"<<endl;of<<"iter++测试:"<<endl;int i = 0,j=0;list<ElemType1>::iterator iter;list<ElemType1>::const_iterator citer;for(;i<NUM1;++i){dw1 = ::GetTickCount();iter = ls.begin();while (iter!=ls.end()){#ifdef NDEBUGg_dwFlag+=i;#endifiter++;}dw2 = ::GetTickCount();cout<<i<<" : "<<dw2-dw1<<endl;of<<i<<" : "<<dw2-dw1<<endl;total+=dw2-dw1;}cout<<"总消耗:"<<total<<endl;of<<"总消耗:"<<total<<endl;cout<<"平均消耗:"<<float(total)/NUM1<<endl;of<<"平均消耗:"<<float(total)/NUM1<<endl;cout<<endl;of<<endl;i=0;total=0;cout<<"++iter测试:"<<endl;of<<"++iter测试:"<<endl;for(;i<NUM1;++i){dw1 = ::GetTickCount();iter = ls.begin();while (iter!=ls.end()){#ifdef NDEBUGg_dwFlag+=i;#endif++iter;}dw2 = ::GetTickCount();cout<<i<<" : "<<dw2-dw1<<endl;of<<i<<" : "<<dw2-dw1<<endl;total+=dw2-dw1;}cout<<"总消耗:"<<total<<endl;of<<"总消耗:"<<total<<endl;cout<<"平均消耗:"<<float(total)/NUM1<<endl;of<<"平均消耗:"<<float(total)/NUM1<<endl;cout<<endl;of<<endl;i=0;total=0;cout<<"citer++测试:"<<endl;of<<"citer++测试:"<<endl;for(;i<NUM1;++i){dw1 = ::GetTickCount();citer = ls.begin();while (citer!=ls.end()){#ifdef NDEBUGg_dwFlag+=i;#endifciter++;}dw2 = ::GetTickCount();cout<<i<<" : "<<dw2-dw1<<endl;of<<i<<" : "<<dw2-dw1<<endl;total+=dw2-dw1;}cout<<"总消耗:"<<total<<endl;of<<"总消耗:"<<total<<endl;cout<<"平均消耗:"<<float(total)/NUM1<<endl;of<<"平均消耗:"<<float(total)/NUM1<<endl;cout<<endl;of<<endl;i=0;total=0;cout<<"++citer测试:"<<endl;of<<"++citer测试:"<<endl;for(;i<NUM1;++i){dw1 = ::GetTickCount();citer = ls.begin();while (citer!=ls.end()){#ifdef NDEBUGg_dwFlag+=i;#endif++citer;}dw2 = ::GetTickCount();cout<<i<<" : "<<dw2-dw1<<endl;of<<i<<" : "<<dw2-dw1<<endl;total+=dw2-dw1;}cout<<"总消耗:"<<total<<endl;of<<"总消耗:"<<total<<endl;cout<<"平均消耗:"<<float(total)/NUM1<<endl;of<<"平均消耗:"<<float(total)/NUM1<<endl;cout<<endl;of<<endl;}void test3_list_type2(ofstream &of){ElemType2 t2;list<ElemType2> ls(NUM3,t2);DWORD dw1,dw2,total=0;cout<<"list,使用type2:"<<endl;of<<"list,使用type2:"<<endl;cout<<"iter++测试:"<<endl;of<<"iter++测试:"<<endl;int i = 0,j=0;list<ElemType2>::iterator iter;list<ElemType2>::const_iterator citer;for(;i<NUM1;++i){dw1 = ::GetTickCount();iter = ls.begin();while (iter!=ls.end()){#ifdef NDEBUGg_dwFlag+=i;#endifiter++;}dw2 = ::GetTickCount();cout<<i<<" : "<<dw2-dw1<<endl;of<<i<<" : "<<dw2-dw1<<endl;total+=dw2-dw1;}cout<<"总消耗:"<<total<<endl;of<<"总消耗:"<<total<<endl;cout<<"平均消耗:"<<float(total)/NUM1<<endl;of<<"平均消耗:"<<float(total)/NUM1<<endl;cout<<endl;of<<endl;i=0;total=0;cout<<"++iter测试:"<<endl;of<<"++iter测试:"<<endl;for(;i<NUM1;++i){dw1 = ::GetTickCount();iter = ls.begin();while (iter!=ls.end()){#ifdef NDEBUGg_dwFlag+=i;#endif++iter;}dw2 = ::GetTickCount();cout<<i<<" : "<<dw2-dw1<<endl;of<<i<<" : "<<dw2-dw1<<endl;total+=dw2-dw1;}cout<<"总消耗:"<<total<<endl;of<<"总消耗:"<<total<<endl;cout<<"平均消耗:"<<float(total)/NUM1<<endl;of<<"平均消耗:"<<float(total)/NUM1<<endl;cout<<endl;of<<endl;i=0;total=0;cout<<"citer++测试:"<<endl;of<<"citer++测试:"<<endl;for(;i<NUM1;++i){dw1 = ::GetTickCount();citer = ls.begin();while (citer!=ls.end()){#ifdef NDEBUGg_dwFlag+=i;#endifciter++;}dw2 = ::GetTickCount();cout<<i<<" : "<<dw2-dw1<<endl;of<<i<<" : "<<dw2-dw1<<endl;total+=dw2-dw1;}cout<<"总消耗:"<<total<<endl;of<<"总消耗:"<<total<<endl;cout<<"平均消耗:"<<float(total)/NUM1<<endl;of<<"平均消耗:"<<float(total)/NUM1<<endl;cout<<endl;of<<endl;i=0;total=0;cout<<"++citer测试:"<<endl;of<<"++citer测试:"<<endl;for(;i<NUM1;++i){dw1 = ::GetTickCount();citer = ls.begin();while (citer!=ls.end()){#ifdef NDEBUGg_dwFlag+=i;#endif++citer;}dw2 = ::GetTickCount();cout<<i<<" : "<<dw2-dw1<<endl;of<<i<<" : "<<dw2-dw1<<endl;total+=dw2-dw1;}cout<<"总消耗:"<<total<<endl;of<<"总消耗:"<<total<<endl;cout<<"平均消耗:"<<float(total)/NUM1<<endl;of<<"平均消耗:"<<float(total)/NUM1<<endl;cout<<endl;of<<endl;}void test4_set_type1(ofstream &of){set<ElemType1> ls;for (int n=0;n<NUM3;++n){ls.insert(_ElemType1(n));}DWORD dw1,dw2,total=0;cout<<"set,使用type1:"<<endl;of<<"set,使用type1:"<<endl;cout<<"iter++测试:"<<endl;of<<"iter++测试:"<<endl;int i = 0,j=0;set<ElemType1>::iterator iter;set<ElemType1>::const_iterator citer;for(;i<NUM1;++i){iter = ls.begin();dw1 = ::GetTickCount();while (iter!=ls.end()){iter++;}dw2 = ::GetTickCount();cout<<i<<" : "<<dw2-dw1<<endl;of<<i<<" : "<<dw2-dw1<<endl;total+=dw2-dw1;}cout<<"总消耗:"<<total<<endl;of<<"总消耗:"<<total<<endl;cout<<"平均消耗:"<<float(total)/NUM1<<endl;of<<"平均消耗:"<<float(total)/NUM1<<endl;cout<<endl;of<<endl;i=0;total=0;cout<<"++iter测试:"<<endl;of<<"++iter测试:"<<endl;for(;i<NUM1;++i){iter = ls.begin();dw1 = ::GetTickCount();while (iter!=ls.end()){++iter;}dw2 = ::GetTickCount();cout<<i<<" : "<<dw2-dw1<<endl;of<<i<<" : "<<dw2-dw1<<endl;total+=dw2-dw1;}cout<<"总消耗:"<<total<<endl;of<<"总消耗:"<<total<<endl;cout<<"平均消耗:"<<float(total)/NUM1<<endl;of<<"平均消耗:"<<float(total)/NUM1<<endl;cout<<endl;of<<endl;i=0;total=0;cout<<"citer++测试:"<<endl;of<<"citer++测试:"<<endl;for(;i<NUM1;++i){citer = ls.begin();dw1 = ::GetTickCount();while (citer!=ls.end()){citer++;}dw2 = ::GetTickCount();cout<<i<<" : "<<dw2-dw1<<endl;of<<i<<" : "<<dw2-dw1<<endl;total+=dw2-dw1;}cout<<"总消耗:"<<total<<endl;of<<"总消耗:"<<total<<endl;cout<<"平均消耗:"<<float(total)/NUM1<<endl;of<<"平均消耗:"<<float(total)/NUM1<<endl;cout<<endl;of<<endl;i=0;total=0;cout<<"++citer测试:"<<endl;of<<"++citer测试:"<<endl;for(;i<NUM1;++i){citer = ls.begin();dw1 = ::GetTickCount();while (citer!=ls.end()){++citer;}dw2 = ::GetTickCount();cout<<i<<" : "<<dw2-dw1<<endl;of<<i<<" : "<<dw2-dw1<<endl;total+=dw2-dw1;}cout<<"总消耗:"<<total<<endl;of<<"总消耗:"<<total<<endl;cout<<"平均消耗:"<<float(total)/NUM1<<endl;of<<"平均消耗:"<<float(total)/NUM1<<endl;cout<<endl;of<<endl;}void test4_set_type2(ofstream &of){set<ElemType2> ls;char sz[255];for (int n=0;n<NUM3;++n){itoa(n,sz,10);ls.insert(ElemType2(sz));}DWORD dw1,dw2,total=0;cout<<"set,使用type2:"<<endl;of<<"set,使用type2:"<<endl;cout<<"iter++测试:"<<endl;of<<"iter++测试:"<<endl;int i = 0,j=0;set<ElemType2>::iterator iter;set<ElemType2>::const_iterator citer;for(;i<NUM1;++i){iter = ls.begin();dw1 = ::GetTickCount();while (iter!=ls.end()){iter++;}dw2 = ::GetTickCount();cout<<i<<" : "<<dw2-dw1<<endl;of<<i<<" : "<<dw2-dw1<<endl;total+=dw2-dw1;}cout<<"总消耗:"<<total<<endl;of<<"总消耗:"<<total<<endl;cout<<"平均消耗:"<<float(total)/NUM1<<endl;of<<"平均消耗:"<<float(total)/NUM1<<endl;cout<<endl;of<<endl;i=0;total=0;cout<<"++iter测试:"<<endl;of<<"++iter测试:"<<endl;for(;i<NUM1;++i){iter = ls.begin();dw1 = ::GetTickCount();while (iter!=ls.end()){++iter;}dw2 = ::GetTickCount();cout<<i<<" : "<<dw2-dw1<<endl;of<<i<<" : "<<dw2-dw1<<endl;total+=dw2-dw1;}cout<<"总消耗:"<<total<<endl;of<<"总消耗:"<<total<<endl;cout<<"平均消耗:"<<float(total)/NUM1<<endl;of<<"平均消耗:"<<float(total)/NUM1<<endl;cout<<endl;of<<endl;i=0;total=0;cout<<"citer++测试:"<<endl;of<<"citer++测试:"<<endl;for(;i<NUM1;++i){citer = ls.begin();dw1 = ::GetTickCount();while (citer!=ls.end()){citer++;}dw2 = ::GetTickCount();cout<<i<<" : "<<dw2-dw1<<endl;of<<i<<" : "<<dw2-dw1<<endl;total+=dw2-dw1;}cout<<"总消耗:"<<total<<endl;of<<"总消耗:"<<total<<endl;cout<<"平均消耗:"<<float(total)/NUM1<<endl;of<<"平均消耗:"<<float(total)/NUM1<<endl;cout<<endl;of<<endl;i=0;total=0;cout<<"++citer测试:"<<endl;of<<"++citer测试:"<<endl;for(;i<NUM1;++i){citer = ls.begin();dw1 = ::GetTickCount();while (citer!=ls.end()){++citer;}dw2 = ::GetTickCount();cout<<i<<" : "<<dw2-dw1<<endl;of<<i<<" : "<<dw2-dw1<<endl;total+=dw2-dw1;}cout<<"总消耗:"<<total<<endl;of<<"总消耗:"<<total<<endl;cout<<"平均消耗:"<<float(total)/NUM1<<endl;of<<"平均消耗:"<<float(total)/NUM1<<endl;cout<<endl;of<<endl;}void test5_map_type1(ofstream &of){map<int,ElemType1> ls;for (int n=0;n<NUM3;++n){ls.insert(pair<int,ElemType1>(n,ElemType1(n)));}DWORD dw1,dw2,total=0;cout<<"map,使用type1:"<<endl;of<<"map,使用type1:"<<endl;cout<<"iter++测试:"<<endl;of<<"iter++测试:"<<endl;int i = 0,j=0;map<int,ElemType1>::iterator iter;map<int,ElemType1>::const_iterator citer;for(;i<NUM1;++i){iter = ls.begin();dw1 = ::GetTickCount();while (iter!=ls.end()){iter++;}dw2 = ::GetTickCount();cout<<i<<" : "<<dw2-dw1<<endl;of<<i<<" : "<<dw2-dw1<<endl;total+=dw2-dw1;}cout<<"总消耗:"<<total<<endl;of<<"总消耗:"<<total<<endl;cout<<"平均消耗:"<<float(total)/NUM1<<endl;of<<"平均消耗:"<<float(total)/NUM1<<endl;cout<<endl;of<<endl;i=0;total=0;cout<<"++iter测试:"<<endl;of<<"++iter测试:"<<endl;for(;i<NUM1;++i){iter = ls.begin();dw1 = ::GetTickCount();while (iter!=ls.end()){++iter;}dw2 = ::GetTickCount();cout<<i<<" : "<<dw2-dw1<<endl;of<<i<<" : "<<dw2-dw1<<endl;total+=dw2-dw1;}cout<<"总消耗:"<<total<<endl;of<<"总消耗:"<<total<<endl;cout<<"平均消耗:"<<float(total)/NUM1<<endl;of<<"平均消耗:"<<float(total)/NUM1<<endl;cout<<endl;of<<endl;i=0;total=0;cout<<"citer++测试:"<<endl;of<<"citer++测试:"<<endl;for(;i<NUM1;++i){citer = ls.begin();dw1 = ::GetTickCount();while (citer!=ls.end()){citer++;}dw2 = ::GetTickCount();cout<<i<<" : "<<dw2-dw1<<endl;of<<i<<" : "<<dw2-dw1<<endl;total+=dw2-dw1;}cout<<"总消耗:"<<total<<endl;of<<"总消耗:"<<total<<endl;cout<<"平均消耗:"<<float(total)/NUM1<<endl;of<<"平均消耗:"<<float(total)/NUM1<<endl;cout<<endl;of<<endl;i=0;total=0;cout<<"++citer测试:"<<endl;of<<"++citer测试:"<<endl;for(;i<NUM1;++i){citer = ls.begin();dw1 = ::GetTickCount();while (citer!=ls.end()){++citer;}dw2 = ::GetTickCount();cout<<i<<" : "<<dw2-dw1<<endl;of<<i<<" : "<<dw2-dw1<<endl;total+=dw2-dw1;}cout<<"总消耗:"<<total<<endl;of<<"总消耗:"<<total<<endl;cout<<"平均消耗:"<<float(total)/NUM1<<endl;of<<"平均消耗:"<<float(total)/NUM1<<endl;cout<<endl;of<<endl;}void test5_map_type2(ofstream &of){map<int,ElemType2> ls;char sz[255];for (int n=0;n<NUM3;++n){itoa(n,sz,10);ls.insert(pair<int,ElemType2>(n,ElemType2(sz)));}DWORD dw1,dw2,total=0;cout<<"map,使用type2:"<<endl;of<<"map,使用type2:"<<endl;cout<<"iter++测试:"<<endl;of<<"iter++测试:"<<endl;int i = 0,j=0;map<int,ElemType2>::iterator iter;map<int,ElemType2>::const_iterator citer;for(;i<NUM1;++i){iter = ls.begin();dw1 = ::GetTickCount();while (iter!=ls.end()){iter++;}dw2 = ::GetTickCount();cout<<i<<" : "<<dw2-dw1<<endl;of<<i<<" : "<<dw2-dw1<<endl;total+=dw2-dw1;}cout<<"总消耗:"<<total<<endl;of<<"总消耗:"<<total<<endl;cout<<"平均消耗:"<<float(total)/NUM1<<endl;of<<"平均消耗:"<<float(total)/NUM1<<endl;cout<<endl;of<<endl;i=0;total=0;cout<<"++iter测试:"<<endl;of<<"++iter测试:"<<endl;for(;i<NUM1;++i){iter = ls.begin();dw1 = ::GetTickCount();while (iter!=ls.end()){++iter;}dw2 = ::GetTickCount();cout<<i<<" : "<<dw2-dw1<<endl;of<<i<<" : "<<dw2-dw1<<endl;total+=dw2-dw1;}cout<<"总消耗:"<<total<<endl;of<<"总消耗:"<<total<<endl;cout<<"平均消耗:"<<float(total)/NUM1<<endl;of<<"平均消耗:"<<float(total)/NUM1<<endl;cout<<endl;of<<endl;i=0;total=0;cout<<"citer++测试:"<<endl;of<<"citer++测试:"<<endl;for(;i<NUM1;++i){citer = ls.begin();dw1 = ::GetTickCount();while (citer!=ls.end()){citer++;}dw2 = ::GetTickCount();cout<<i<<" : "<<dw2-dw1<<endl;of<<i<<" : "<<dw2-dw1<<endl;total+=dw2-dw1;}cout<<"总消耗:"<<total<<endl;of<<"总消耗:"<<total<<endl;cout<<"平均消耗:"<<float(total)/NUM1<<endl;of<<"平均消耗:"<<float(total)/NUM1<<endl;cout<<endl;of<<endl;i=0;total=0;cout<<"++citer测试:"<<endl;of<<"++citer测试:"<<endl;for(;i<NUM1;++i){citer = ls.begin();dw1 = ::GetTickCount();while (citer!=ls.end()){++citer;}dw2 = ::GetTickCount();cout<<i<<" : "<<dw2-dw1<<endl;of<<i<<" : "<<dw2-dw1<<endl;total+=dw2-dw1;}cout<<"总消耗:"<<total<<endl;of<<"总消耗:"<<total<<endl;cout<<"平均消耗:"<<float(total)/NUM1<<endl;of<<"平均消耗:"<<float(total)/NUM1<<endl;cout<<endl;of<<endl;}#define LOGFILE_PATH_A L"qin_nkl_23529303.etl"int main(){string strFileName = _FNAME;string strTime = __TIME__;for(int k=0;k<strTime.length();++k)if(strTime[k]==':')strTime[k]='-';strFileName+=strTime;strFileName+="_test1.txt";//文件测试用char sz[MAX_PATH];sprintf(sz,"F:\\parse_%s_%d.txt",LOGFILE_PATH_A,GetTickCount());cout<<sz<<endl;sprintf(sz,"F:\\parse_%S_%d.txt",LOGFILE_PATH_A,GetTickCount());cout<<sz<<endl;cin.get();return 0;//strFileName = sz;ofstream of(strFileName.c_str());of<<GetTickCount()<<endl;of.flush();of.close();cin.get();return 0;test1_int_i(of);test1_dword_i(of);test2_vec_type1(of);test2_vec_type2(of);test3_list_type1(of);test3_list_type2(of);test4_set_type1(of);test4_set_type2(of);test5_map_type1(of);test5_map_type2(of);cout<<"标记:"<<g_dwFlag<<endl;of.flush();of.close();cin.get();return 0;}
vector/list/set/map 遍历耗时统计的更多相关文章
- map遍历的四种方式
原文 http://blog.csdn.net/dayanxuqun/article/details/26348277 以下是map遍历的四种方式: // 一.推荐只用value的时候用,都懂的... ...
- java map遍历方式及效率
本文转载自Java Map遍历方式的选择. 只给出遍历方式及结论.测试数据可以去原文看. 如果你使用HashMap 同时遍历key和value时,keySet与entrySet方法的性能差异取决于ke ...
- 分页查询和分页缓存查询,List<Map<String, Object>>遍历和Map遍历
分页查询 String sql = "返回所有符合条件记录的待分页SQL语句"; int start = (page - 1) * limit + 1; int end = pag ...
- springMVC Aspect AOP 接口耗时统计
在接口开发中,我们通常需要统计接口耗时,为后续接口性能做统计.在springMVC中可以用它的aop来记录日志. 1.在spring配置文件中开启AOP <!--*************** ...
- js中三个对数组操作的函数 indexOf()方法 filter筛选 forEach遍历 map遍历
indexOf()方法 indexOf()方法返回在该数组中第一个找到的元素位置,如果它不存在则返回-1. 不使用indexOf时 var arr = ['apple','orange','pea ...
- 原生JS forEach()和map()遍历的区别以及兼容写法
一.原生JS forEach()和map()遍历 共同点: 1.都是循环遍历数组中的每一项. 2.forEach() 和 map() 里面每一次执行匿名函数都支持3个参数:数组中的当前项item,当前 ...
- map遍历性能记录
map遍历可以通过keySet或者entrySet方式. 性能上:entrySet略胜一筹,原因是keySet获取到key后再根据key去获取value,在查一遍,所以慢一些. keySet: //先 ...
- forEach() 和 map() 遍历
1.forEach() 没有返回值. arr[].forEach(function(value,index,array){ //do something }) 参数:value数组中的当前项, i ...
- js的map遍历和array遍历
1. array遍历: [1].forEach() forEach是ES5中操作数组的一种方法,主要功能是遍历数组.forEach方法中的function回调有三个参数:第一个参数是遍历的数组内容,第 ...
随机推荐
- vue 阻止冒泡弹窗小案例( 知识点:@click.stop=''")
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- DP小小结
入门题 : [Luogu1441]砝码称重 , [NOIP2015]子串 [AHOI2009]中国象棋 , 详见代码 [HNOI2007]梦幻岛宝珠 , 详见代码 [NOIP2012]开车旅行 , 没 ...
- Kibana6.x.x源码分析--如何使用kibana的savedObjectType对象
默认kibana插件定义了三种保存实体对象[savedObjectType],如下图所示: 要使用只需要在自己定义的app的uses属性中添加上:savedObjectTypes 即可,如下图所示: ...
- POJ1475 Pushing Boxes 华丽丽的双重BFS
woc累死了写了两个半小时...就是BFS?我太菜了... 刚开始以为让人预先跑一遍BFS,然后一会儿取两节加起来就好了,结果发现求出来的最短路(就是这个意思)会因箱子的移动而变化....我死了QWQ ...
- pip不是内部或外部命令也不是可运行的程序或批处理文件的问题
当我用windows电脑 pip install missingno 时 它居然会报pip不是内部或外部命令也不是可运行的程序或批处理文件的问题! 解决方法: 1)找到 pip.exe 所在位置,一般 ...
- UESTC - 1692 注意DP顺序
#include<iostream> #include<algorithm> #include<cstdio> #include<cstring> #i ...
- Android 通过网络获取图片的源码
将开发过程中经常用到的内容做个备份,如下的资料是关于Android 通过网络获取图片的的内容. package com.netimg; import android.app.Activity;impo ...
- linux 重新定义命令alias——重定义查看日志命令
背景:很多时候,需要输入一大串命令来查看日志,例如: cd /home/weblogic/prodmain/log/ftlog;tail -f tps-mv-ft-rolling.log 每次打开终端 ...
- Oracle ASM 常用命令
01, 查看磁盘路径 select name,path,group_number from v$asm_disk_stat; 02, 查看磁盘组信息 select state,name,type,to ...
- pytorch 安装
安装pytorch时,官网不能选择版本.原以为是浏览器问题,换了几个浏览器都不行. 后来FQ之后,就能选择版本了. sudo pip install torch torchvision