2009年9月23日星期三

[PerlChina] Re: 在我遇到的这种情况下散列和数组哪个快?

这个。。怎么说呢。。处理字符串正是perl的强项。。因为perl有变量内插和正则表达式
跟c对比觉得不方便的时候就是它不能按字符索引操作而已,或者说跟c的区别在于perl字符串不是字符数组

就现在的问题来看,操作一个128M的字符串,当做一个1G下标的位数组来用,其实也没有太不方便了。。当然要慢很多,毕竟不是数组
总之 这个事情perl不好做是因为资源不够用。。而不是处理字符串不强。。否则一个hash不就搞定了


----------------------------------
msmouse@ir.hit.edu.cn
msmouse@gmail.com


2009/9/23 Michael Zeng <galaxy2004@gmail.com>
用perl处理字符串本来就不是强项
 
就是index, substr , split 几个函数,觉得 到了关键还得用c
 


 
2009/9/23 msmouse <msmouse@gmail.com>
这和我说的是同一个方法 跟agentzh的c++也是同一个方法

他演示的是从一个计算出来的index里面取两个二进制位的方法

看一下agentzh的c++程序吧,看懂了你就明白了。。


----------------------------------
msmouse@ir.hit.edu.cn
msmouse@gmail.com


2009/9/23 空格 <ribozyme2004@gmail.com>
这个似乎是目前最节省内存的方法,不过我还是不太明白。

在perl里如何实现你说的这个二进制的bit运算?抱歉我不知道用什么语句能实现这个"2位表示一个字符"。
另外这个:
$char = $key & 0b000011;
我也不太明白, & 后面的这个0b000011如果就是转换了的bit运算结果,那么0b对应什么意思?


On 9月23日, 下午5时49分, truncatei <trunca...@gmail.com> wrote:
> bit运算应该是这样:
> 2位表示一个字符
> 00 A
> 01 G
> 10 T
> 11 C
>
> 这样下来一个15个字符的序列一共30位,一个int足矣,必用字符串省很多内存
>
> 取各个位
> 如:
> $char = $key & 0b000011;
> $char = $key & 0b001100;
> $char = $key & 0b110000
> ...
> 取出每个位以后再做判断
> $char == 0;
> $char == 1;
> $char == 2;
> $char == 4;
>
> 2009/9/23 空格 <ribozyme2...@gmail.com>
>
> > 我昏了,之前我把00,01,10,11理解成十进制的数字了。
> > 就是说,
> > 当取到一个字串赋给$key之后,
> > $key=~s{A}{0}g;
> > $key=~s{G}{1}g;
> > $key=~s{T}{2}g;
> > $key=~s{C}{3}g;
> > 再用 exists(%hash{$key}); 检查是否有特定键值。是这样的吧?
>
> > On 9月23日, 上午11时17分, msmouse <msmo...@gmail.com> wrote:
> > > 就是这个意思。前面agentzh说:
> > > "事先约定 A,T,G,C 分别对应 00, 01, 10, 11,即 2 个比特的数值。"
> > > 即用两个位表示一个字符,15个字符即是30位。30个二进制位即是15个4进制位
> > > ----------------------------------
> > > msmo...@ir.hit.edu.cn
> > > msmo...@gmail.com




--
           Yours Sincerely
                   Zeng Hong




--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛"PerlChina Mongers 讨论组"论坛。
 要在此论坛发帖,请发电子邮件到 perlchina@googlegroups.com
 要退订此论坛,请发邮件至 perlchina+unsubscribe@googlegroups.com
 更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛

-~----------~----~----~----~------~----~------~--~---

没有评论: