有两个问题我不太明白:
"为避免存储各个 key,将 key 作 hash 到一个 int32 整数,便只有 4个字节。"
这个是不是说,我把四个字母换成数字就可以了?
我尝试着用正则匹配把字符串换成01的数字串,就像这样:$tempa=~s{A}{00}g;
但是似乎并没有很节省内存啊。
您说的位数组我不了解。好像在perl里不能实现,只能在C/C++里实现是么?
On 9月22日, 下午12时52分, agentzh <agen...@gmail.com> wrote:
> 2009/9/22 msmouse <msmo...@gmail.com>
>
> > 没有15!那么大的量级吧 应该是4的15次幂,也就是2的30次幂,大约1G种组合 ,用一个int32数组计数即可,散列的话考虑到很多种组合是不存在的
> > 有2G内存也是可能一次跑成的
>
> 嗯嗯嗯,忘了是有重复元素的列表了。。。哈哈,多谢指正。总排列数确实是 4^15 :) 每一个位子都只有 4 种可能性,便是 4*4*4*...*4 这
> 15 个 4 相乘。为避免存储各个 key,将 key 作 hash 到一个 int32 整数,便只有 4
> 个字节。如果不保存计数值,用位数组来代替哈希表的话,应该更省空间,1 GB RAM 作数据本身的存储,再留个几 MB RAM 作其他计算用 :)
> 保存次数并用数组的话,用 int32 作为数组元素则需要 4 GB 了吧?不知道这一次我有没有算错,呵呵 :P
>
> Cheers,
> -agentzh
--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛"PerlChina Mongers 讨论组"论坛。
要在此论坛发帖,请发电子邮件到 perlchina@googlegroups.com
要退订此论坛,请发邮件至 perlchina+unsubscribe@googlegroups.com
更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛
-~----------~----~----~----~------~----~------~--~---
没有评论:
发表评论