Michel Fortin:

> So to determine if a function is worth memoizing, you have to say yes 
> to those two things:
> 1.    is it faster than recomputing the return value?
> 2.    is this function called often with the same inputs?
> While the compiler could take an educated guess at answering 1 given 
> the code of a function, question 2 can only be answered by knowing the 
> usage pattern of various functions.

GCC has profile-driven optimization. I presume it may help in such problems too.


> Perhaps the cache needs to be a little smarter than a regular AA. You
> may not want to keep each and every value that was computed. Depending
> on the situation, keeping only the 100 last results may be enough, in
> which case you can dedicate a fixed amount of memory for caching.

Right. There are time-limited memoization strategies, and other ones as well. 
In Python I have seen plenty of them:
http://code.activestate.com/recipes/325905/
http://code.activestate.com/recipes/498110/

Bye,
bearophile

Reply via email to