3.31. Creating an Object Cache
Problem
Your application creates many objects that are expensive to create and/or have a large memory footprint—for instance, objects that are populated with data from a database or a web service upon their creation. These objects are used throughout a large portion of the application’s lifetime. You need a way to not only enhance the performance of these objects—and as a result, your application—but also to use memory more efficiently.
Solution
Create an object cache to keep these objects in memory as long as possible, without tying up valuable heap space and possibly resources. Since cached objects may be reused at a later time, you also forego the process of having to create similar objects many times.
You can reuse
the ASP.NET cache that is located in the
System.Web.Caching
namespace or you can build your
own lightweight caching mechanism. The See Also section at the end of
this recipe provides several Microsoft resources that show you how to
use the ASP.NET cache to cache your own objects. However, the ASP.NET
cache is very complex and may have a nontrivial overhead associated
with it, so using a lightweight caching mechanism like the one shown
here is a viable alternative.
The following class, ObjCache
, represents a type
that allows the caching of SomeComplexObj
objects:
using System; using System.Collections; public class ObjCache { // Constructors public ObjCache( ) { Cache = new Hashtable( ); } public ObjCache(int initialCapacity) { Cache = ...
Get C# Cookbook now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.