public Handler.PerformanceData.DataTypes.PerformanceStatisticsForPageCollection GetStatisticsForAllPages(DateTime forDate) { FlushNotProcessedPackets(); lock (_readerLock) { var pages = GetPerPageDistributionDictionary(forDate).Select(p => PerformanceStatisticsForPage.Calculate(p.Value.ToArray(), p.Key)).ToArray(); var allPages = PerformanceStatisticsForPage.Calculate(GetAllPagesDistribution(forDate).ToArray(), "All Pages"); return(new PerformanceStatisticsForPageCollection(pages, allPages)); } }
public DataTypes.PerformanceStatisticsForPageCollection GetStatisticsForAllPages(DateTime forDate) { if (!_getStatisticsForAllPagesCache.ContainsKey(forDate)) { FillCache(forDate); } var allStats = _getStatisticsForAllPagesCache[forDate]; return(new PerformanceStatisticsForPageCollection( _perPageCache[forDate].Keys.Select(pp => PerformanceStatisticsForPage.Calculate(_perPageCache[forDate][pp], pp)).ToArray(), PerformanceStatisticsForPage.Calculate(allStats, "All Pages") )); }
private PerformanceStatisticsForPageCollection GetRequestsForDate(DateTime forDate) { using (var connection = new SqlConnection(_connectionString)) { var q = connection.CreateCommand(); q.CommandText = "select Duration,PageId from Requests where Timestamp>=@From and Timestamp<@Till"; q.Parameters.Add(new SqlParameter("From", forDate)); q.Parameters.Add(new SqlParameter("Till", forDate.AddDays(1))); connection.Open(); var overall = new List <int>(); var pages = new Dictionary <int, List <int> >(); using (var rdr = q.ExecuteReader()) { while (rdr.Read()) { var page = (int)rdr[1]; var duration = (int)rdr[0]; overall.Add(duration); if (!pages.ContainsKey(page)) { pages[page] = new List <int>(); } pages[page].Add(duration); } } var pageIdToNameMap = _pageIdProvider.GetPageNames(pages.Keys); return(new PerformanceStatisticsForPageCollection( pages.Keys.Select(p => PerformanceStatisticsForPage.Calculate(pages[p].ToArray(), pageIdToNameMap[p])).ToArray(), //new PerformanceStatisticsForPage[0], PerformanceStatisticsForPage.Calculate(overall.ToArray(), "All pages") )); } }
private PerformanceStatisticsForPageCollection GetFromCacheTable(DateTime forDate) { //AssertCacheAvailable(forDate); using (var conn = new SqlConnection(_connectionString)) { var cmd = conn.CreateCommand(); cmd.CommandText = @"select * from PreCalculatedPagesStatistics rc left join PageIds pid on pid.Id = rc.PageId where Date=@Date"; cmd.Parameters.Add(new SqlParameter("Date", forDate)); conn.Open(); var pageList = new List <PerformanceStatisticsForPage>(); var allPages = PerformanceStatisticsForPage.Empty; using (var rdr = cmd.ExecuteReader()) { while (rdr.Read()) { var item = new PerformanceStatisticsForPage { Count = (int)rdr["Count"], Mean = (int)rdr["Mean"], Median = (int)rdr["Median"], Sum = (int)rdr["Sum"] }; if (rdr["PageName"] == DBNull.Value) { item.PageName = "All Pages"; allPages = item; } else { item.PageName = (string)rdr["PageName"]; pageList.Add(item); } } return(new PerformanceStatisticsForPageCollection(pageList.ToArray(), allPages)); } } }