Beefy Boxes and Bandwidth Generously Provided by pair Networks
Don't ask to ask, just ask
 
PerlMonks  

Re^3: ItemStyle causing high memory consumption

by zentara (Archbishop)
on Apr 16, 2012 at 18:23 UTC ( [id://965372]=note: print w/replies, xml ) Need Help??


in reply to Re^2: ItemStyle causing high memory consumption
in thread ItemStyle causing high memory consumption

To be honest, I'm not very agile with object oriented programming , although I can work thru it, if I had code to run. In your case, from reading the description of your classes, it seems that you could define all the ItemStyles in your B base class, if B.pm is derived from Tk::Tree, then make all your D1 , D2, etc. classes as Derived from B. See perldoc Tk::Derived. That way they all inherit the settings. You might want to look at Using the Option Database. Possibly setting the the Option Database is the way to avoid the memory gain problems. Possibly in B.pm you could access the $mw with the SUPER. Something along the lines of
sub ClassInit { my ($class, $mw) = @_; $class->SUPER::ClassInit($mw); $mw->optionAdd("*tree*font", $text_font); $mw->optionAdd("*tree*foreground", $fgcolor); return $class; }
I'm sorry I can't help you further, maybe some Object Oriented monk can help you, but I'm totally non-OO in my thinking style. :-)

I'm not really a human, but I play one on earth.
Old Perl Programmer Haiku ................... flash japh

Replies are listed 'Best First'.
Re^4: ItemStyle causing high memory consumption
by ghosh123 (Monk) on Apr 17, 2012 at 02:28 UTC

    Hi Zentara, Thanks for all your posts. Let me make my requirement very simple. Forget about object oriented programming a also whether B.pm is derived from Tk::Tree or not. Just think about procedural programming. I just need to build the logic where the called function (i.e getItemStyle )can stringify the passed parameter set and make them the key of a hash. The value of the hash shoud be the created ItemStyle object. I am trying to write the pseudocode below :

    &getItemStyle($tree, 'text', -anchor => 'w',-fg => 'red'); sub getItemStyle { my $obj = shift; ## holds $tree my $type = shift; ## holds text ## Now stringify the "-anchor =>'w' -fg => 'red' ## and make them a hash key and create the ItemStyle. ## So that next time if I call getItemStyle with same ## same parameters(-anchor and -fg ), it does not create ## the ItemStyle all over again and checks the hash if ## the paramters exist as a key then returns its value. ## Also we need to sort the parameters so that if we ## cal getItemStyle with the same two parameters and ## reverse the order of mentioning them (-fg => red , ## -anchor =>'w') , it considers it as the same call ## as (-anchor => 'w', -fg =>red) happened earlier .

    Hope the problem is clear now. Main thing is to elegantly and easily stringify the parameters, use them as a hash key, store the object in the value corresponding to that key and return. If it is a new parameter set, then make a new key and create the itemstyle.

      Hope the problem is clear now

      Sorry, I don't see why you should need to jump thru all these hoops, just to set a common ItemStyle, and why it would decrease the memory usage. However, it's your code and you see things with more clarity.


      I'm not really a human, but I play one on earth.
      Old Perl Programmer Haiku ................... flash japh

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others making s'mores by the fire in the courtyard of the Monastery: (3)
As of 2024-04-26 00:51 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found