Beefy Boxes and Bandwidth Generously Provided by pair Networks
Syntactic Confectionery Delight

Re^4: inside-out objects using arrays?

by fishbot_v2 (Chaplain)
on Sep 18, 2005 at 00:56 UTC ( #492950=note: print w/replies, xml ) Need Help??

in reply to Re^3: inside-out objects using arrays?
in thread inside-out objects using arrays?

You could avoid that problem by assigning the index to the first undef slot, rather than straight incrementing:

my $instance_index = List::Util::first { !defined $_ } @name;

You end up, though, with an O(n) constructor. But perhaps the savings in access make up for this.

Replies are listed 'Best First'.
Re^5: inside-out objects using arrays?
by chromatic (Archbishop) on Sep 18, 2005 at 02:20 UTC

    If you really want to save memory, you may want to avoid pinning your inside-out array at the high-water mark. Store a stack of reclaimed indices and push to it in the destructor and shift from it when generating the reference for a new object. Then you can shrink the array if necessary.

    (When you ask "Wait, won't it stay at the high-water mark even if there were 1000 elements and are only two now?", I'll sigh and talk about compacting garbage collectors and double-indirection the other flaws in this scheme. Still, it's a fun idea.)

      Hey, that's neat. I'll have to think about that. Thanks!
Re^5: inside-out objects using arrays?
by ikegami (Pope) on Sep 18, 2005 at 02:52 UTC
    Why not just convert @name to %name. You can keep using the numerical index. That changes the array into a sparse array. The time cost is quite minimal.

Log In?

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

How do I use this? | Other CB clients
Other Users?
Others about the Monastery: (3)
As of 2018-06-21 02:52 GMT
Find Nodes?
    Voting Booth?
    Should cpanminus be part of the standard Perl release?

    Results (117 votes). Check out past polls.