This is generally the case with any caching or memoizing strategy: if the cached results are never re-used, then caching is an overhead. But still, there are many many cases where caching really make sense, it can sometimes transform a quadratic (and sometimes even exponential) algorithm into a linear one. Sometimes it is easy enough to analyze to figure out; in other cases, only benchmark can tell.