Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation

Re^3: Disk based hash (as opposed to RAM based)

by BrowserUk (Pope)
on Oct 07, 2012 at 21:42 UTC ( #997721=note: print w/replies, xml ) Need Help??

in reply to Re^2: Disk based hash (as opposed to RAM based)
in thread Disk based hash (as opposed to RAM based)

I realise that you are trying to be helpful; but I do not think you have thought this through.

  • Firstly, the OP clearly states Hash of Arrays.

    Hence, catering for anything more is overkill.

  • More importantly, the OPs code clearly shows that he needs to build up the arrays piecemeal -- ie. value by value.

    If he were to use a serialiser module for this, he would need to deserialise the current state of the appropriate array; add the latest new element; and then re-serialise; for each line in the file. Which would be horribly slow no matter which of the serialiser alternatives he used.

    The only other alternative would be to wait until each array was complete in memory before serialising and adding to DB_File, but that would mean waiting until the entire file had been read, and thus, the entire structure would be required to be hend in memory before serialisation could be performed. And if he had the memory to do that, he wouldn't be looking to use a disk-based hash.

For a one-off process, he might consider pre-sorting the input file by the key field, so that the contents of each (sub) array could be built up in memory before being serialised once, but for that to be a viable option requires a whole set of circumstances that are not in evidence from the OP.

With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.

RIP Neil Armstrong

  • Comment on Re^3: Disk based hash (as opposed to RAM based)

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://997721]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others romping around the Monastery: (5)
As of 2017-11-24 06:33 GMT
Find Nodes?
    Voting Booth?
    In order to be able to say "I know Perl", you must have:

    Results (345 votes). Check out past polls.