Beispiel #1
0
        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);
        }
Beispiel #2
0
        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));
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        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);
        }
Beispiel #6
0
        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());
        }
Beispiel #7
0
        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);
        }
Beispiel #8
0
 public static string GetAllTrackersReport(TrackerReportOptions options)
 {
     options.trackerFilter = ".+";
     return(GetTrackersReport(options));
 }