On Wed, Mar 16, 2011 at 4:35 PM, CuppoJava <patrickli_2...@hotmail.com>wrote:

> The problem arises after the program as been running for a long time
> and the value of the counter is very high. There might be only two
> Nodes in use, but one Node might have an id = 1 (because it was one of
> the first ones created), and the other Node could have an id = 1000000
> (because it was only recently created). Now the cost of allocating the
> vector is too great.
>
>
For many graph applications, node deletion is an uncommon operation.  If you
have heavy node deletion, it's certainly possible that your node numbers
have a lot of gaps.  If you think of the id numbering as being analogous to
assigning marker addresses in a dedicated region of memory, then it's
basically a defrag issue.  The freelist method is one option, but it's not
the only one.  You could track how many nodes are in the graph and you track
the next available id.  When the number of nodes falls below a certain
fraction of the max id in the graph, you could "defrag" and go through and
renumber all the nodes.

It's hard to figure out the "best" way without knowing the exact
application, but hopefully this gives you some ideas to play with.

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to