Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris
 
PerlMonks  

Re^2: Hashes do preserve insertion order after all

by bliako (Monsignor)
on Jul 31, 2019 at 23:30 UTC ( [id://11103681]=note: print w/replies, xml ) Need Help??


in reply to Re: Hashes do preserve insertion order after all
in thread Hashes do preserve insertion order after all

 What's wrong with them?

efficiency?

  • Comment on Re^2: Hashes do preserve insertion order after all

Replies are listed 'Best First'.
Re^3: Hashes do preserve insertion order after all
by LanX (Saint) on Aug 01, 2019 at 00:09 UTC
    Elaborate?

    Cheers Rolf
    (addicted to the Perl Programming Language :)
    Wikisyntax for the Monastery FootballPerl is like chess, only without the dice

      memory and time: What I had in mind was the solution of an array in tandem with a hashtable. The array receives items as they are created, and so it keeps the order of insertion. And the hashtable stores data with key to facilitate search-by-key. However deleting by key is not efficient as it needs to search the array too. Introducing more values to the hash (e.g. the corresponding array index) increases memory. Inserting also needs updating 2 data structures.

      10 min edit: also deleting from middle of array is inefficient.

        This is pretty much what Hash::Ordered does, but with tombstoning to reduce the overheads when deleting. See its POD (and code) for details, as well as its benchmarking results.

        You will always need to update two data structures if you reuse Perl structures.

        The OP suggested using sort, so how efficient is that without caching the result?

        Maybe B-Trees are better suited here, though this certainly depends on the use case.

        Cheers Rolf
        (addicted to the Perl Programming Language :)
        Wikisyntax for the Monastery FootballPerl is like chess, only without the dice

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://11103681]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others studying the Monastery: (7)
As of 2024-04-19 09:35 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found