2009年6月11日星期四

[PerlChina] Re: 关于二进制数据的读取

恩 写了一个搜索Server,当索引文件大的时候,预加载很有问题。
 
现在的情况:
1.2M的索引文件 预加载后就占用25M的内存,之后分析是因为循环索引并构造HASH列表时产生的内存碎片过多造成的。
 
所以在生成索引程序中打算直接把整个结构转为一个字符串,并以二进制格式写入索引文件,这样在Server预加载的时候就不用构造HASH列表,省去了初始化HASH列表的时间、也减少了索引文件本身的大小。
 
这就是当前希望解决的问题。
 
2009-06-11

Chancey

发件人: agentzh
发送时间: 2009-06-11  14:04:14
收件人: perlchina
抄送:
主题: [PerlChina] Re: 关于二进制数据的读取
On 6/10/09, Chancey <chanceycn@gmail.com> wrote:
> 请教一个问题:
> 比如现在有一个 %hash 这样的HASH列表,我想以一个字符串的形式转为二进制数据写入文件,该如何做?
>
FreezeThaw?
   http://search.cpan.org/perldoc?FreezeThaw
其自身的描述正好类似你所说的,呵呵:
   FreezeThaw - converting Perl structures to strings and back.
也是二进制的。如果我没记错的话,这是 perl 数据结构序列化库中速度最快的(不是它,就是另一个二进行的序列化模块) :)
不过个人以为纯文本比二进制更友好一些,所以多会使用 JSON::XS, YAML::Syck, Data::Dumper 这些模块,呵呵。。。
Cheers,
-agentzh

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

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

没有评论: