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_"

#endif

typedef 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 NDEBUG

g_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<<"++iter测试:"<<endl;

	of<<"++iter测试:"<<endl;

	for(;i<NUM1;++i)

	{

		dw1 = ::GetTickCount();

		iter = vec1.begin();

		while (iter!=vec1.end())

		{

#ifdef NDEBUG

			g_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 NDEBUG

			g_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;

	i=0;

	total=0;

	cout<<"++citer测试:"<<endl;

	of<<"++citer测试:"<<endl;

	for(;i<NUM1;++i)

	{

		dw1 = ::GetTickCount();

		citer = vec1.begin();

		while (citer!=vec1.end())

		{

#ifdef NDEBUG

			g_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 NDEBUG

			g_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<<"++iter测试:"<<endl;

	of<<"++iter测试:"<<endl;

	for(;i<NUM1;++i)

	{

		dw1 = ::GetTickCount();

		iter = vec1.begin();

		while (iter!=vec1.end())

		{

#ifdef NDEBUG

			g_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 NDEBUG

			g_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;

	i=0;

	total=0;

	cout<<"++citer测试:"<<endl;

	of<<"++citer测试:"<<endl;

	for(;i<NUM1;++i)

	{

		dw1 = ::GetTickCount();

		citer = vec1.begin();

		while (citer!=vec1.end())

		{

#ifdef NDEBUG

			g_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 NDEBUG

			g_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<<"++iter测试:"<<endl;

	of<<"++iter测试:"<<endl;

	for(;i<NUM1;++i)

	{

		dw1 = ::GetTickCount();

		iter = ls.begin();

		while (iter!=ls.end())

		{

#ifdef NDEBUG

			g_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 NDEBUG

			g_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;

	i=0;

	total=0;

	cout<<"++citer测试:"<<endl;

	of<<"++citer测试:"<<endl;

	for(;i<NUM1;++i)

	{

		dw1 = ::GetTickCount();

		citer = ls.begin();

		while (citer!=ls.end())

		{

#ifdef NDEBUG

			g_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 NDEBUG

			g_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<<"++iter测试:"<<endl;

	of<<"++iter测试:"<<endl;

	for(;i<NUM1;++i)

	{

		dw1 = ::GetTickCount();

		iter = ls.begin();

		while (iter!=ls.end())

		{

#ifdef NDEBUG

			g_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 NDEBUG

			g_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;

	i=0;

	total=0;

	cout<<"++citer测试:"<<endl;

	of<<"++citer测试:"<<endl;

	for(;i<NUM1;++i)

	{

		dw1 = ::GetTickCount();

		citer = ls.begin();

		while (citer!=ls.end())

		{

#ifdef NDEBUG

			g_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)