首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >c++中map和unordered_map的性能差异

c++中map和unordered_map的性能差异
EN

Stack Overflow用户
提问于 2010-02-28 14:02:17
回答 2查看 11.4K关注 0票数 18

我有一个简单的要求,我需要一个地图的类型。然而,我需要理论上最快的检索时间。

我使用了map和来自tr1的新提议的unordered_map,我发现至少在解析文件和创建map时,通过一次插入一个元素。

map只用了2分钟,而unordered_map用了5分钟。

因为它将是在Hadoop集群上执行的代码的一部分,并且将包含大约1亿个条目,所以我需要尽可能少的检索时间。

还有另一个有用的信息:当前插入的数据(键)是从1,2,...增加到约1000万。

我还可以强制用户指定最大值并使用上面的顺序,这会对我的实现产生重大影响吗?(我听说map是基于rb树的,按递增顺序插入会带来更好的性能(或者更糟?)

以下是代码

map<int,int> Label // this is being changed to unordered_map  
fstream LabelFile("Labels.txt");  


// Creating the map from the Label.txt  
if (LabelFile.is_open())  
{  
    while (! LabelFile.eof() )  
    {             
        getline (LabelFile,inputLine);  
        try  
        {  
            curnode=inputLine.substr(0,inputLine.find_first_of("\t"));  
            nodelabel=inputLine.substr(inputLine.find_first_of("\t")+1,inputLine.size()-1);  
            Label[atoi(curnode.c_str())]=atoi(nodelabel.c_str());  
        }  
        catch(char* strerr)  
        {  
            failed=true;  
            break;  
        }  
    }  
    LabelFile.close(); 
}

试探性的解决方案:在查看评论和答案之后,我认为动态C++数组将是最好的选择,因为实现将使用密集键。谢谢

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2350248

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档