public static TrackersReport GenerateTrackerReport(TrackerReportOptions options) { if (string.IsNullOrEmpty(options.trackerFilter)) { options.trackerFilter = ".+"; } var trackerRx = new Regex(options.trackerFilter, RegexOptions.Compiled | RegexOptions.IgnoreCase); var trackers = PtModel.BuildTrackerList(new PtInfo[] { }, options.sortBy, options.sortAsc, options.sort); var filteredTrackers = trackers.Where(tracker => trackerRx.IsMatch(tracker.name)).ToList(); var report = new TrackersReport() { trackers = new List <TrackerInfo>() }; foreach (var tracker in filteredTrackers) { TrackerInfo info = new TrackerInfo { avgTime = (float)tracker.avgTime, totalTime = (float)tracker.totalTime, samples = tracker.sampleCount, peakTime = (float)tracker.peakTime, trackerName = tracker.name }; report.trackers.Add(info); } return(report); }
public static string GetTrackersReport(TrackerReportOptions options) { var trackerRx = new Regex(options.trackerFilter, RegexOptions.Compiled | RegexOptions.IgnoreCase); var trackers = PtModel.BuildTrackerList(new PtInfo[] { }, options.sortBy, options.sortAsc, options.sort); var filteredTrackers = trackers.Where(tracker => trackerRx.IsMatch(tracker.name)).ToList(); return(GetTrackersReport(filteredTrackers, options)); }
private static bool ValidateReportOptions(TrackerReportOptions options) { var showSomething = options.showSamples || options.showPeak || options.showAvg || options.showTotal; if (!showSomething) { Debug.LogError("You should have at least one shown value in the report"); return(false); } return(true); }
public static string GetTrackersReport(IEnumerable <string> trackerNames, TrackerReportOptions options) { if (!ValidateReportOptions(options)) { return(null); } var sb = new StringBuilder(); var maxTrackerNameLength = trackerNames.Max(name => name.Length); var moreThanOneLine = false; foreach (var trackerName in trackerNames) { if (!EditorPerformanceTracker.Exists(trackerName)) { continue; } var shownTokens = new List <string>(); if (options.showSamples) { shownTokens.Add($"{EditorPerformanceTracker.GetSampleCount(trackerName)} samples"); } if (options.showPeak) { shownTokens.Add($"Peak {PtModel.ToEngineeringNotation(EditorPerformanceTracker.GetPeakTime(trackerName))}s"); } if (options.showAvg) { shownTokens.Add($"Avg. {PtModel.ToEngineeringNotation(EditorPerformanceTracker.GetAverageTime(trackerName))}s"); } if (options.showTotal) { shownTokens.Add($"Total {PtModel.ToEngineeringNotation(EditorPerformanceTracker.GetTotalTime(trackerName))}s"); } if (moreThanOneLine) { sb.AppendLine(); } sb.AppendFormat($"{{0,{maxTrackerNameLength}}}: ", trackerName); sb.Append(string.Join(", ", shownTokens)); moreThanOneLine = true; } return(sb.ToString()); }
internal static void SendPerformanceLogEvent() { PerformanceLogEvent evt = new PerformanceLogEvent(); var options = new TrackerReportOptions(); options.showSamples = true; options.showPeak = true; options.showAvg = true; options.showTotal = true; options.sort = true; options.sortBy = ColumnId.AvgTime; options.sortAsc = false; evt.report = PerformanceTrackerReportUtils.GenerateTrackerReport(options); evt.Done(); Send(EventName.PerformanceLogEvent, evt); }
public static string GetTrackersReport(IEnumerable <PtInfo> trackers, TrackerReportOptions options) { if (!ValidateReportOptions(options)) { return(null); } var sb = new StringBuilder(); var maxTrackerNameLength = trackers.Max(tracker => tracker.name.Length); var moreThanOneLine = false; foreach (var tracker in trackers) { var shownTokens = new List <string>(); if (options.showSamples) { shownTokens.Add($"{tracker.sampleCount} samples"); } if (options.showPeak) { shownTokens.Add($"Peak {PtModel.ToEngineeringNotation(tracker.peakTime)}s"); } if (options.showAvg) { shownTokens.Add($"Avg. {PtModel.ToEngineeringNotation(tracker.avgTime)}s"); } if (options.showTotal) { shownTokens.Add($"Total {PtModel.ToEngineeringNotation(tracker.totalTime)}s"); } if (moreThanOneLine) { sb.AppendLine(); } sb.AppendFormat($"{{0,{maxTrackerNameLength}}}: ", tracker.name); sb.Append(string.Join(", ", shownTokens)); moreThanOneLine = true; } return(sb.ToString()); }
public static void OpenBugReportingTool(string marker, Analytics.ActionSource source = Analytics.ActionSource.Scripting) { Analytics.SendPerformanceActionEvent(new Analytics.PerformanceActionEvent( Analytics.ActionType.LogPerformanceBug, marker, source)); var options = new TrackerReportOptions(); options.showSamples = true; options.showPeak = true; options.showAvg = true; options.showTotal = true; options.sort = true; options.sortBy = ColumnId.PeakTime; options.sortAsc = false; var report = PerformanceTrackerReportUtils.GetAllTrackersReport(options); var reportFilePath = SavePerformanceTrackerReport(report); var descriptionBuilder = new StringBuilder(); descriptionBuilder.AppendLine("1. What is slow (complete performance tracker report attached)"); if (!string.IsNullOrEmpty(marker)) { options.trackerFilter = $"^{marker}$"; var markerReport = PerformanceTrackerReportUtils.GetTrackersReport(options); descriptionBuilder.AppendLine(); descriptionBuilder.AppendLine(markerReport); } descriptionBuilder.AppendLine(); descriptionBuilder.Append("2. How we can reproduce it using the example you attached"); var myAssets = new[] { GetFullPath(reportFilePath) }; BugReporterUtils.OpenBugReporter(descriptionBuilder.ToString(), myAssets); }
public static string GetAllTrackersReport(TrackerReportOptions options) { options.trackerFilter = ".+"; return(GetTrackersReport(options)); }