public PerfStatisticData ExtractOldData(DateTime _NewestData) { PerfStatisticData oldData = new PerfStatisticData(); foreach (var currPerfPageItem in m_PerfPageItems) { int lastIndex = currPerfPageItem.Value.m_PageAccessItems.FindLastIndex((_Value) => { return(_Value.m_StartRequestDateTime < _NewestData); }); if (lastIndex != -1) { PerfPageItem newPerfPageItem = new PerfPageItem(); newPerfPageItem.m_PageName = currPerfPageItem.Value.m_PageName; newPerfPageItem.m_PageAccessItems = currPerfPageItem.Value.m_PageAccessItems.GetRange(0, lastIndex + 1); currPerfPageItem.Value.m_PageAccessItems.RemoveRange(0, lastIndex + 1); oldData.m_PerfPageItems.Add(currPerfPageItem.Key, newPerfPageItem); } } foreach (var currUserAccess in m_UserAccesses) { int lastIndex = currUserAccess.Value.FindLastIndex((_Value) => { return(_Value.m_StartRequestDateTime < _NewestData); }); if (lastIndex != -1) { List <PageAccessItem> newPerfAccessItems = currUserAccess.Value.GetRange(0, lastIndex + 1); currUserAccess.Value.RemoveRange(0, lastIndex + 1); oldData.m_UserAccesses.Add(currUserAccess.Key, newPerfAccessItems); } } return(oldData); }
public static float GetAverageExecutionTime(string _PageName) { AssertInitialize(); PerfPageItem perfPageItem = null; lock (sm_PerfStatsDataLock) { if (sm_PerfStatsData.m_PerfPageItems.TryGetValue(_PageName, out perfPageItem) == true) { return(perfPageItem.GetAverageExecutionTime()); } } return(-1.0f); }
public static void AddStatistics(HttpContext _ContextObject, int _PreRenderTimeMs, int _RenderTimeMs, int _PageSize) { return;//DISABLED FOR NOW AssertInitialize(); string clientIP = _ContextObject.Request.UserHostAddress; if (clientIP == null) { clientIP = "NULL"; } PageAccessItem newPageAccess = new PageAccessItem(); newPageAccess.m_FullUrl = _ContextObject.Request.RawUrl; newPageAccess.m_ReferrerUrl = (_ContextObject.Request.UrlReferrer != null ? _ContextObject.Request.UrlReferrer.ToString() : ""); newPageAccess.m_StartRequestDateTime = _ContextObject.Timestamp.ToUniversalTime(); newPageAccess.m_ExecutionTimeMs = (int)(DateTime.UtcNow - newPageAccess.m_StartRequestDateTime).TotalMilliseconds; newPageAccess.m_PreRenderTimeMs = _PreRenderTimeMs; newPageAccess.m_RenderTimeMs = _RenderTimeMs; newPageAccess.m_PageSize = _PageSize; newPageAccess.m_ClientIP = clientIP; if (_ContextObject.Response.IsRequestBeingRedirected == true) { newPageAccess.m_RedirectedTo = _ContextObject.Response.RedirectLocation; } else { newPageAccess.m_RedirectedTo = ""; } lock (sm_PerfStatsDataLock) { {//Add to m_PerfPageItems string pageName = _ContextObject.Request.Url.AbsolutePath; PerfPageItem perfPageItem = null; if (sm_PerfStatsData.m_PerfPageItems.TryGetValue(pageName, out perfPageItem) == false) { perfPageItem = new PerfPageItem(); perfPageItem.m_PageName = pageName; sm_PerfStatsData.m_PerfPageItems.Add(pageName, perfPageItem); } perfPageItem.m_PageAccessItems.Add(newPageAccess); } {//Add to m_UserAccesses List <PageAccessItem> pageAccessItems = null; if (sm_PerfStatsData.m_UserAccesses.TryGetValue(clientIP, out pageAccessItems) == false) { pageAccessItems = new List <PageAccessItem>(); sm_PerfStatsData.m_UserAccesses.Add(clientIP, pageAccessItems); } if (pageAccessItems != null) { pageAccessItems.Add(newPageAccess); } else { Logger.ConsoleWriteLine("pageAccessItems was null!!!", ConsoleColor.Red); } } } LogExecutionTimes(); }