map作为最常用的数据结构之一,用的好可以大幅度的提升性能。
// java_cpp_perftest.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <map> //map #include <string> #include <iostream> #include <objbase.h> // uuid使用到 using namespace std; #define GUID_LEN 64 int _tmain(int argc, _TCHAR* argv[]) { int i,j; // map定义 map<int, string> mapStudent; for (i=0;i<10000;i++) { // 创建UUID, vc专用, linux通用的可参考http://www.cnblogs.com/lidabo/p/3602038.html char buffer[GUID_LEN] = { 0 }; GUID guid; if ( CoCreateGuid(&guid) ) { fprintf(stderr, "create guid error\n"); return -1; } _snprintf_s(buffer, sizeof(buffer), "%08X-%04X-%04x-%02X%02X-%02X%02X%02X%02X%02X%02X", guid.Data1, guid.Data2, guid.Data3, guid.Data4[0], guid.Data4[1], guid.Data4[2], guid.Data4[3], guid.Data4[4], guid.Data4[5], guid.Data4[6], guid.Data4[7]); // map插入 mapStudent.insert(pair<int, string>(i, buffer)); } // 获取时间相对计数器, vc专用 DWORD begin = GetTickCount(); int f; for (j=0;j<100;j++) { for (f=0;f<10000;f++) { // map查找 mapStudent.find(f); } } DWORD end = GetTickCount(); // 打印时间差 cout << (end - begin) << endl; //就我们VS2012测试来看, 这一步居然要4s左右, 相同情况下,JDK 8只用了20ms // map遍历 map<int, string>::iterator iter; for(iter = mapStudent.begin(); iter != mapStudent.end(); iter++) { cout << iter->first << " " << iter->second << endl; } system("pause"); }
时间: 2024-10-20 22:21:33