Beefy Boxes and Bandwidth Generously Provided by pair Networks
Problems? Is your data what you think it is?
 
PerlMonks  

Re: Array-based Inside-out Objects with Object::InsideOut

by rvosa (Curate)
on Nov 18, 2005 at 00:41 UTC ( #509652=note: print w/ replies, xml ) Need Help??


in reply to Array-based Inside-out Objects with Object::InsideOut

Hey, that's cool. I feel a bit flattered ;-)

How do you generate and reclaim (or otherwise keep track of) the array indices?


Comment on Re: Array-based Inside-out Objects with Object::InsideOut
Re^2: Array-based Inside-out Objects with Object::InsideOut
by jdhedden (Deacon) on Nov 18, 2005 at 01:00 UTC
    Array indices (object IDs) are generate by sequences (starting with 1). There is one sequence for each class tree.

    When an object is destroyed, it's ID is reclaimed as part of the DESTROY subroutine. Reclaimed ID are maintained in a queue, one per class tree. Reclaimed IDs are doled out first, of course.


    Remember: There's always one more bug.
      Do you notice any performance degradation when instantiating and destroying lots and lots of objects across a large-ish (well, more than one class) inheritance tree? I wonder what the effect is, both memory-wise and on lookup speed, of having large and sparse class arrays that hold the object data.
        Do you notice any performance degradation when instantiating and destroying lots and lots of objects across a large-ish (well, more than one class) inheritance tree?
        If you're instantiating AND destroying objects, then there should be no performance degradations as object IDs are recycled. The size of the field arrays does not grow larger than the largest object ID. The largest object ID is determined by the maximum sum of all objects in an inheritance tree that exist at any moment. For example, even if you create and destroy a million objects, but only every have one thousand in existance at any one time, then the field arrays will never exceed 1000. Further, array lookup time is not affected by array size: It is always a constant.

        Remember: There's always one more bug.

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others cooling their heels in the Monastery: (9)
As of 2014-10-02 12:35 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    What is your favourite meta-syntactic variable name?














    Results (56 votes), past polls