首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用大型堆栈和稀疏散列时性能较慢

使用大型堆栈和稀疏散列时性能较慢
EN

Stack Overflow用户
提问于 2013-06-13 04:11:32
回答 1查看 210关注 0票数 0

我有一大堆未签名的long long's (100M+),我正试图将其放入SparseHash中,但性能非常慢,因为对于每1k个条目,在内存为16 it的MacBook Pro上需要大约4-6秒。

代码语言:javascript
运行
复制
    while (stackUI.size()>0) {
       Set.insert(stackUI.top());
       stackUI.pop();
       if (stackUI.size()%1000==0) {
           cout<<stackUI.size()<<" "<<time(0)<<endl;
    }
}

是我在我的实现中做错了什么,还是有更好的方法来解决这个问题?

EN

回答 1

Stack Overflow用户

发布于 2013-06-13 04:27:55

你有没有把它的表现和gcc hash_set做过比较?

当负载因子变高(如0.5)时,散列容器会将其大小加倍并复制所有内容。既然您已经知道您的hashset将包含多少元素(我猜是您的堆栈大小),那么在开始插入之前,请尝试保留这些存储桶。这样,您将避免重新散列,并获得显着的加速。

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

https://stackoverflow.com/questions/17074442

复制
相关文章

相似问题

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