内存优化问题2

amdgaming 2013-08-20 11:24:31
我有一个hashmap
key是从key1到key200000,不连续
而每一个key对应的value一个是10万到100万的中随机的30个数字,不重复,
比如这样:

key1:数组[10万,20万....300万]
key2:数组[20万,40万,33万零100 共30个数字]

前提是我现在要查询是通过key来找那个数组

现在的vaule应该是重复存储,有没有办法不怎么降低查询速度的情况下

降低存储需要的空间,请各位支招,谢谢!
...全文
306 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
hua_zhixing_ 2013-09-12
  • 打赏
  • 举报
回复
你的hashmap存储的个数可能达到600W,而value用到的个数只有不到100W,所以要降低存储,我觉得就是如何去重的问题。可以尝试把value作为key,key作为value来重新hash。如果反过来hash产生的重复数据比你现在的重复数据还多,那此方法就不可取了。
happytengfei 2013-08-21
  • 打赏
  • 举报
回复
嗯。有点难度,首先你内存的花销为: key number * 30 * sizeof(each value in array)。所以一个有效的办法是观察一下所有的key是不是有规律的,如果有的话,合理的合并key的value。这样使得key number下降。也可以从另外一个方向考虑减少内存,就是对所有的key进行排序,编号。然后将200000*30的数据存到文件里,当输入key值时,将文件中相应的块load到内存里。
FancyMouse 2013-08-20
  • 打赏
  • 举报
回复
30个数拉出去。key2数组存储30个数中的index。1字节就够了。
amdgaming 2013-08-20
  • 打赏
  • 举报
回复
有没有办法不怎么降低查询速度的情况下 降低一点点可以接受

33,027

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧