锁定老帖子 主题:将HashMap文件化
精华帖 (0) :: 良好帖 (1) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-04-23
iamlotus 写道 你这行事先知道吗?
知道的话遍历一遍,把hash相同的在内存里比较不就完了? 遍历一遍得把所有的hash值都存下来是吧,不然咋知道有hash相同的?这值到是可以把value设成空,可以节省内存空间。嗯。。等下,遍历一遍貌似得两个循环吧,不然咋找? iamlotus 写道 不知道就学数据库建B+树,用file based hash空间太大,肯定不合算。其实不用那么麻烦,建张表,建个UK,然后全部insert进去不就完了?千万而已,又不是千亿,数据库吃得消。 用数据库整到是没试过,千万的话,字符串长度32,得多长时间?比如是个8核,64G的机器。 |
|
返回顶楼 | |
发表时间:2011-04-25
lenozhi 写道 iamlotus 写道 你这行事先知道吗?
知道的话遍历一遍,把hash相同的在内存里比较不就完了? 遍历一遍得把所有的hash值都存下来是吧,不然咋知道有hash相同的?这值到是可以把value设成空,可以节省内存空间。嗯。。等下,遍历一遍貌似得两个循环吧,不然咋找? iamlotus 写道 不知道就学数据库建B+树,用file based hash空间太大,肯定不合算。其实不用那么麻烦,建张表,建个UK,然后全部insert进去不就完了?千万而已,又不是千亿,数据库吃得消。 用数据库整到是没试过,千万的话,字符串长度32,得多长时间?比如是个8核,64G的机器。 比如你有一组值A[]={A1 A2 A1 A3}, hash后分别是 {H1,H1,H1,H2} (假设A1,A2hash相等) 你的需求究竟是 “已知A1,问A中是否有和A1相同的值” 还是 “已知A,问其中有哪些值出现了一次以上”? 前者就是事先知道这行,后者就是不知道这行。 对前者,事先由A1算出 H1,然后遍历一遍A即可,连HashSet都不用,怎么会要两个循环? 后者你自己试试就知道时间了,配置不同不一样的。我估计不出插入时间,不过select应该能在20秒搞定。 |
|
返回顶楼 | |
发表时间:2011-04-25
最后修改:2011-04-25
iamlotus 写道 lenozhi 写道 iamlotus 写道 你这行事先知道吗?
知道的话遍历一遍,把hash相同的在内存里比较不就完了? 遍历一遍得把所有的hash值都存下来是吧,不然咋知道有hash相同的?这值到是可以把value设成空,可以节省内存空间。嗯。。等下,遍历一遍貌似得两个循环吧,不然咋找? iamlotus 写道 不知道就学数据库建B+树,用file based hash空间太大,肯定不合算。其实不用那么麻烦,建张表,建个UK,然后全部insert进去不就完了?千万而已,又不是千亿,数据库吃得消。 用数据库整到是没试过,千万的话,字符串长度32,得多长时间?比如是个8核,64G的机器。 比如你有一组值A[]={A1 A2 A1 A3}, hash后分别是 {H1,H1,H1,H2} (假设A1,A2hash相等) 你的需求究竟是 “已知A1,问A中是否有和A1相同的值” 还是 “已知A,问其中有哪些值出现了一次以上”? 前者就是事先知道这行,后者就是不知道这行。 对前者,事先由A1算出 H1,然后遍历一遍A即可,连HashSet都不用,怎么会要两个循环? 后者你自己试试就知道时间了,配置不同不一样的。我估计不出插入时间,不过select应该能在20秒搞定。 是知道A,A存在于文件中。找出A中重复的。jdbm那个还不错,我试过。 |
|
返回顶楼 | |