private static IReadOnlyDictionary <PageKey, uint> GetResidentSetPageCounts(string tracePath, Timestamp startTime, Timestamp stopTime) { using (ITraceProcessor trace = TraceProcessor.Create(tracePath)) { IPendingResult <IResidentSetDataSource> pendingResidentSet = trace.UseResidentSetData(); trace.Process(); IResidentSetDataSource residentSetData = pendingResidentSet.Result; Dictionary <PageKey, uint> pageCounts = new Dictionary <PageKey, uint>(); foreach (IResidentSetSnapshot snapshot in residentSetData.Snapshots) { if (snapshot.Timestamp < startTime || snapshot.Timestamp > stopTime) { continue; } foreach (IResidentSetPage page in snapshot.Pages) { PageKey key = new PageKey(snapshot.Timestamp, page.MemoryManagerListType, page.Priority); if (!pageCounts.ContainsKey(key)) { pageCounts.Add(key, 0); } ++pageCounts[key]; } } return(pageCounts); } }