64,639
社区成员
发帖
与我相关
我的任务
分享
CMapStringToPtr m_OnlineUserHash;
int nMaxOnlineUserCount = 120000;
m_OnlineUserHash.InitHashTable(nMaxOnlineUserCount*1.5);
for (int i = 0; i < 30000; ++i)
{
stringstream ss;
ss<<setw(20)<<setfill('0')<<i;
m_OnlineUserHash.SetAt(ss.str().c_str(),(void*)i);
}
void* pValue = NULL;
POSITION pos = NULL;
CString strKey;
DWORD dwtickbeg = GetTickCount();
for(pos = m_OnlineUserHash.GetStartPosition();pos != NULL;)
{
m_OnlineUserHash.GetNextAssoc(pos,strKey,pValue);
m_OnlineUserHash.RemoveKey(strKey);
}
DWORD dwEnd = GetTickCount() - dwtickbeg;
hash_map<string,int> hm(30000);
for (int i = 0; i < 30000; ++i)
{
stringstream ss;
ss<<setw(20)<<setfill('0')<<i;
//hm[ss.str()] = i;
hm.insert(make_pair(ss.str(),i));
}
DWORD dwtickbeg = GetTickCount();
hash_map<string,int>::iterator iter = hm.begin();
while (iter != hm.end())
{
const string &str = iter->first;
iter = hm.erase(iter);
}
DWORD dwEnd = GetTickCount() - dwtickbeg;
unordered_map<string,int> hm(30000);
for (int i = 0; i < 30000; ++i)
{
stringstream ss;
ss<<setw(20)<<setfill('0')<<i;
//hm[ss.str()] = i;
hm.insert(make_pair(ss.str(),i));
}
DWORD dwtickbeg = GetTickCount();
unordered_map<string,int>::iterator iter = hm.begin();
while (iter != hm.end())
{
const string &str = iter->first;
iter = hm.erase(iter);
}
DWORD dwEnd = GetTickCount() - dwtickbeg;
hash_map<string,int> hm;
vector<string> vec(30000);
for (int i = 0; i < 30000; ++i)
{
stringstream ss;
ss<<setw(20)<<setfill('0')<<i;
vec[i] = ss.str();
//hm[ss.str()] = i;
hm.insert(make_pair(ss.str(),i));
}
DWORD dwtickbeg = GetTickCount();
for (int i = 0; i < 30000; ++i)
{
hm.erase(vec[i]);
}
DWORD dwEnd = GetTickCount() - dwtickbeg;