The class exposes various high-level routines to time important aspects of the DDC, mostly focusing on performance of GetCachedData, PutCachedData, and CachedDataProbablyExists. This class will track time taken, calls made, hits, misses, bytes processed, and do it for two buckets: 1) the main thread and 2) all other threads. The reason is because any time spent in the DDC on the main thread is considered meaningful, as DDC access is generally expected to be async from helper threads.