可以每次处理一部分, 分而治之。 为了提高运行效率,Perl的实现采取是典型的用空间换时间的做法。所以对内存消耗特别大,而如果用hash的话,消耗就会更大。所以只能每次读一部分到内存,一段段的处理。
2009/9/22 Jester <[email protected]> > bioperl好像没有这样的用法…… > 这种hash直接处理当然是最简单的,不过我觉得可能需要考虑一下内存的问题。 > 我遇到过处理比较大的序列时,一不小心就out of memory了。:( > 不知道哪位有比较节约内存的方法? > > jester,[email protected] > 2009-09-22 > ----- Original Message ----- > From: Qiang (James) Li > To: perlchina > Sent: 2009-09-22, 00:03:19 > Subject: [PerlChina] Re: 在我遇到的这种情况下散列和数组哪个快? > > > > > >2009/9/21 空格 : > >> 有一个长度为4.8G的字符串,其中只有四种字母ATGC。按照排列组合数,这四个字母组成的长度为15字符串总共有1`073`741`824种可能 > >> 性。我想统计一下,这个大字符串中是否包含了所有的长度为15的可能的字串。如果没有包含全部,那么有哪些字串的出现次数为零。 > >> 为此,我想需要建立一个很大的表,然后从那个超大的字符串中逐个取出长度为15的字串,然后在表中统计其出现次数。这样可以得到结果。 > > > >不知道 bioperl 里是否有现成的工具,偶不是搞生物的。 > > > >不过你匹配的时候把满足要求的用 $hash{...}++ 直接统计就可以了,不用把不符合要求的也放到 hash 里。 > > > >> 我的问题是,这样大的表格,用散列写好还是用二维数组写比较好?或者有什么别的方式实现更可行一些。 > > > >hash 即可。 > > > >Qiang > > > >> > > > > -- 此致, 敬礼! 黄浩 国家高性能计算机工程技术研究中心 中国科学院计算技术研究所 工作电话:01062600552 email:[email protected] --~--~---------~--~----~------------~-------~--~----~ 您收到此信息是由于您订阅了 Google 论坛“PerlChina Mongers 讨论组”论坛。 要在此论坛发帖,请发电子邮件到 [email protected] 要退订此论坛,请发邮件至 [email protected] 更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛 -~----------~----~----~----~------~----~------~--~---
