示例#1
0
        private static IEnumerable <CacheEntry> GetCacheUsage(IEnumerable <LogEntry> logEntries)
        {
            var cacheMisses         = new List <LogEntry>();
            var cacheEntries        = new List <CacheEntry>();
            var lastCacheEntryByKey = new Dictionary <string, CacheEntry>();

            foreach (var logEntry in logEntries)
            {
                if (CacheEntry.IsCacheFill(logEntry))
                {
                    var cacheEntry = new CacheEntry(logEntry);
                    cacheEntries.Add(cacheEntry);
                    lastCacheEntryByKey[cacheEntry.Key] = cacheEntry;
                }
                else if (CacheEntry.IsCacheHit(logEntry) && lastCacheEntryByKey.TryGetValue(CacheEntry.GetKeyFromCacheHit(logEntry), out var cacheEntry))
                {
                    cacheEntry.AddHit(logEntry);
                }
                //else if (CacheEntry.IsCacheMiss(logEntry))
                //{
                //    cacheMisses.Add(logEntry);
                //}
            }

            //var cacheMissesByKey = cacheMisses.ToLookup(CacheEntry.GetKeyFromCacheMiss);

            //foreach (var cacheEntry in cacheEntries)
            //{

            //}

            return(cacheEntries);
        }