谢谢你的回复。
有两个问题我不太明白:
“为避免存储各个 key,将 key 作 hash 到一个 int32 整数,便只有 4个字节。”
这个是不是说,我把四个字母换成数字就可以了?
我尝试着用正则匹配把字符串换成01的数字串,就像这样:$tempa=~s{A}{00}g;
但是似乎并没有很节省内存啊。您说的位数组我不了解。好像在perl里不能实现,只能在C/C++里实现是么? On 9月22日, 下午12时52分, agentzh <[email protected]> wrote: > 2009/9/22 msmouse <[email protected]> > > > 没有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 讨论组”论坛。 要在此论坛发帖,请发电子邮件到 [email protected] 要退订此论坛,请发邮件至 [email protected] 更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛 -~----------~----~----~----~------~----~------~--~---
