So you have written your ruby app.

It works.

So you throw it at a really Big Problem....and it grinds to a
halt. Too slow, too much memory.

If I find I that keep recreating an object, here is a trick that I
sometimes play...

Replace...
-------------
   class BigExpensiveMadeOften
     def initialize( unique_name)
       # Big expensive computation
     end
   end
   .
   .
   .
   # Some Inner Loop
   bem = BigExpensiveMadeOften.new( unique_name)
-------------
with...
   class BigExpensiveMadeOften
     def initialize( unique_name)
       # Big expensive computation
     end

    @@memo = Hash.new {|hash,key|
         result = BigExpensiveMadeOften.new( unique_name)
         hash[key] = result
     }

     def BigExpensiveMadeOften.create( unique_name)
       return @@memo[unique_name]
     end
   end
   .
   .
   .
   # Some Inner Loop
   bem = BigExpensiveMadeOften.create( unique_name)
-------

and hey presto, instead of recreating a BigExpensiveMadeOften object
every time, it just immediately returns one of them out of the memo 
cache.

Really an easy optimization to do.

John Carter                             Phone : (64)(3) 358 6639
Tait Electronics                        Fax   : (64)(3) 359 4632
PO Box 1645 Christchurch                Email : john.carter / tait.co.nz
New Zealand

The universe is absolutely plastered with the dashed lines exactly one
space long.