vector list

比如:

   不考虑索引,插入,删除。 只需要一个动态内存,vector list谁的效率高尼


#include <iostream>
#include <string>
#include <vector>
#include <list>
#include <wtypes.h>

typedef struct _PERFORTEST
{
	std::wstring wstrUserName;
	std::wstring wstrUserAge;
	std::wstring wstrUserSex;
	std::wstring wstrUserInfo;
}PERFORTEST,*PPERFORTEST;

void main()
{
	std::vector<PERFORTEST> vec;
	std::list<PERFORTEST> lt;

	vec.clear();
	lt.clear();

	PERFORTEST pt;
	pt.wstrUserName = L"zyb666666666666666666666666666666666666666666666"
		L"666666666666666666666666666666666666666666666666666666666666666";
	pt.wstrUserAge = L"6666666666666666666666666666666666666666666666666"
		L"666666666666666666666666666666666666666666666666666666666666666";
	pt.wstrUserSex = L"6666666666666666666666666666666666666666666666666"
		L"666666666666666666666666666666666666666666666666666666666666666";
	pt.wstrUserInfo = pt.wstrUserName + pt.wstrUserAge + pt.wstrUserSex;

	LARGE_INTEGER freq, start, end;
	QueryPerformanceFrequency(&freq);
	QueryPerformanceCounter(&start);
	for (int i = 0; i < 1; i++)
	{
		for (int j = 0; j < 10000; j++)
		{
			lt.push_back(pt);
		}
		lt.clear();
	}
	QueryPerformanceCounter(&end);
	double dInterval = (end.QuadPart - start.QuadPart)*1.0 / freq.QuadPart;
	std::cout << "list spend time " << dInterval << std::endl;

	QueryPerformanceCounter(&start);
	for (int i = 0; i < 1; i++)
	{
		for (int j = 0; j < 10000; j++)
		{
			vec.push_back(pt);
		}
		vec.clear();
	}
	QueryPerformanceCounter(&end);
	dInterval = (end.QuadPart - start.QuadPart)*1.0 / freq.QuadPart;
	std::cout << "vector spend time " << dInterval << std::endl;

	while (true);

} 

经过测试 不管j的循环是 1还是100000,list花费的时间都比vector少

猜你喜欢

转载自blog.csdn.net/huanongying131/article/details/80933062