On Thursday, December 02, 2010 14:26:36 Xiao Lan wrote: > > But, looking at the module I think it can be slow because it relies > > heavily on seek(). A better approach would be to mmap() the file. In > > perl it would look then like a big string. My favourite tool for that is > > File::Map. > > OK thanks for this info. I will take a look at File::Map.
If I were you, I'd really consider to convert the database into an MMapDB, see http://search.cpan.org/perldoc?MMapDB You can create the MMapDB object in a <Perl> section in the httpd.conf or in a ChildInit handler or something similar: <Perl> use MMapDB; # use a global variable here to make it accessible from everywhere $My::DB=MMapDB->new(filename=>..., readonly=>1); </Perl> Then in your handler (simplest case): use MMapDB qw/:mode/; $My::MMapDB->start; # update the object if the database file has changed $My::DB->datamode=DATAMODE_SIMPLE; ($value)=...@{$my::DB->main_index->{$key} || []}; If the extra step of converting the QQWry.Dat into a QQWry.mmdb can be built into your work flow that would be the route I'd take. Otherwise I'd look for a C library to that database and build a perl interface layer in XS. Torsten Förtsch -- Need professional modperl support? Hire me! (http://foertsch.name) Like fantasy? http://kabatinte.net