Path: | lib/more/facets/memoizer.rb |
Last Update: | Mon Jun 01 21:54:17 -0400 2009 |
Memoizer wraps objects to provide cached method calls.
class X def initialize ; @tick = 0 ; end def tick; @tick + 1; end def memo; @memo ||= Memoizer.new(self) ; end end x = X.new x.tick #=> 1 x.memo.tick #=> 2 x.tick #=> 3 x.memo.tick #=> 2 x.tick #=> 4 x.memo.tick #=> 2
You can also use to cache a collections of objects to gain code speed ups.
points = points.collect{|point| Memoizer.cache(point)}
After our algorithm has finished using points, we want to get rid of these Memoizer objects. That‘s easy:
points = points.collect{|point| point.self }
Or if you prefer (it is ever so slightly safer):
points = points.collect{|point| Memoizer.uncache(point)}
See javathink.blogspot.com/2008/09/what-is-memoizer-and-why-should-you.html
Copyright (c) 2006 Erik Veenstra