Exemplo n.º 1
0
        private double refreshArray(PerfTimerResult data, Dictionary <string, PerfTimerResult> linkedResult, int lineNbr, bool mainResultIsUpdate, double total, bool withEmptyMain = false)
        {
            double          totalActionTime = 0;
            PerfTimerResult linkedr;
            int             MainAvg, MainMax, linkAvg, linkMax;

            if (mainResultIsUpdate)
            {
                MainAvg = (int)LabelResultColumn.AvgUpdt;
                MainMax = (int)LabelResultColumn.MaxUpdt;
                linkAvg = (int)LabelResultColumn.AvgDraw;
                linkMax = (int)LabelResultColumn.MaxDraw;
            }
            else
            {
                MainAvg = (int)LabelResultColumn.AvgDraw;
                MainMax = (int)LabelResultColumn.MaxDraw;
                linkAvg = (int)LabelResultColumn.AvgUpdt;
                linkMax = (int)LabelResultColumn.MaxUpdt;
            }

            _displayedResults[(int)LabelResultColumn.Component, lineNbr].Text = data.Name;
            if (withEmptyMain == false)
            {
                _displayedResults[MainAvg, lineNbr].Text = (data.AvgInMS / total).ToString("00.000") + (total != 1 ? "%" : "");
                _displayedResults[MainMax, lineNbr].Text = data.MaxInMS.ToString("0.000");
                totalActionTime += data.AvgInMS;
            }
            else
            {
                _displayedResults[MainAvg, lineNbr].Text = "";
                _displayedResults[MainMax, lineNbr].Text = "";
            }

            string AvgInMS = string.Empty;
            string MaxInMS = string.Empty;

            //Get the other linked Draw data
            if (linkedResult.TryGetValue(data.Name, out linkedr))
            {
                AvgInMS          = (linkedr.AvgInMS / total).ToString("00.000") + (total != 1 ? "%" : "");
                MaxInMS          = linkedr.MaxInMS.ToString("0.000");
                totalActionTime += linkedr.AvgInMS;
            }

            _displayedResults[linkAvg, lineNbr].Text = AvgInMS;
            _displayedResults[linkMax, lineNbr].Text = MaxInMS;

            return(totalActionTime);
        }
Exemplo n.º 2
0
        public double UpdateData()
        {
            //Perfom a data update
            double totalTimeFrame = 0;

            IOrderedEnumerable <PerfTimerResult> MainResult   = null;
            Dictionary <string, PerfTimerResult> linkedResult = new Dictionary <string, PerfTimerResult>();
            bool mainResultIsUpdate = false;

            //Get List of all components
            HashSet <string> compList = new HashSet <string>(_game.ComponentsPerfMonitor.PerfTimer.PerfTimerResults.Values.Select(x => x.Name));

            double total = 1;

            totalTimeFrame = _game.ComponentsPerfMonitor.PerfTimer.PerfTimerResults.Values.Sum(x => x.AvgInMS);
            if (_showInPercent)
            {
                total = totalTimeFrame / 100;
            }

            switch (_columnSorted)
            {
            case LabelResultColumn.Component:
                mainResultIsUpdate = true;
                if (_orderDescending)
                {
                    MainResult = _game.ComponentsPerfMonitor.PerfTimer.PerfTimerResults.Values.Where(x => x.Suffix == "Update").OrderByDescending(x => x.PerfSamplingName);
                }
                else
                {
                    MainResult = _game.ComponentsPerfMonitor.PerfTimer.PerfTimerResults.Values.Where(x => x.Suffix == "Update").OrderBy(x => x.PerfSamplingName);
                }

                foreach (var itemResult in _game.ComponentsPerfMonitor.PerfTimer.PerfTimerResults.Values.Where(x => x.Suffix == "Draw"))
                {
                    linkedResult.Add(itemResult.Name, itemResult);
                }
                break;

            case LabelResultColumn.AvgUpdt:
                mainResultIsUpdate = true;
                if (_orderDescending)
                {
                    MainResult = _game.ComponentsPerfMonitor.PerfTimer.PerfTimerResults.Values.Where(x => x.Suffix == "Update").OrderByDescending(x => x.AvgInMS);
                }
                else
                {
                    MainResult = _game.ComponentsPerfMonitor.PerfTimer.PerfTimerResults.Values.Where(x => x.Suffix == "Update").OrderBy(x => x.AvgInMS);
                }

                foreach (var itemResult in _game.ComponentsPerfMonitor.PerfTimer.PerfTimerResults.Values.Where(x => x.Suffix == "Draw"))
                {
                    linkedResult.Add(itemResult.Name, itemResult);
                }
                break;

            case LabelResultColumn.MaxUpdt:
                mainResultIsUpdate = true;
                if (_orderDescending)
                {
                    MainResult = _game.ComponentsPerfMonitor.PerfTimer.PerfTimerResults.Values.Where(x => x.Suffix == "Update").OrderByDescending(x => x.MaxInMS);
                }
                else
                {
                    MainResult = _game.ComponentsPerfMonitor.PerfTimer.PerfTimerResults.Values.Where(x => x.Suffix == "Update").OrderBy(x => x.MaxInMS);
                }

                foreach (var itemResult in _game.ComponentsPerfMonitor.PerfTimer.PerfTimerResults.Values.Where(x => x.Suffix == "Draw"))
                {
                    linkedResult.Add(itemResult.Name, itemResult);
                }
                break;

            case LabelResultColumn.AvgDraw:
                mainResultIsUpdate = false;
                if (_orderDescending)
                {
                    MainResult = _game.ComponentsPerfMonitor.PerfTimer.PerfTimerResults.Values.Where(x => x.Suffix == "Draw").OrderByDescending(x => x.AvgInMS);
                }
                else
                {
                    MainResult = _game.ComponentsPerfMonitor.PerfTimer.PerfTimerResults.Values.Where(x => x.Suffix == "Draw").OrderBy(x => x.AvgInMS);
                }

                foreach (var itemResult in _game.ComponentsPerfMonitor.PerfTimer.PerfTimerResults.Values.Where(x => x.Suffix == "Update"))
                {
                    linkedResult.Add(itemResult.Name, itemResult);
                }
                break;

            case LabelResultColumn.MaxDraw:
                mainResultIsUpdate = false;
                if (_orderDescending)
                {
                    MainResult = _game.ComponentsPerfMonitor.PerfTimer.PerfTimerResults.Values.Where(x => x.Suffix == "Draw").OrderByDescending(x => x.MaxInMS);
                }
                else
                {
                    MainResult = _game.ComponentsPerfMonitor.PerfTimer.PerfTimerResults.Values.Where(x => x.Suffix == "Draw").OrderBy(x => x.MaxInMS);
                }

                foreach (var itemResult in _game.ComponentsPerfMonitor.PerfTimer.PerfTimerResults.Values.Where(x => x.Suffix == "Update"))
                {
                    linkedResult.Add(itemResult.Name, itemResult);
                }
                break;
            }

            int LineToDisplay    = 0;
            int MaxLineToDisplay = _displayedResults.GetLength(1);
            int lineNbr          = 0;

            _totalItems = MainResult.Count();

            foreach (var data in MainResult)
            {
                compList.Remove(data.Name);
                //Skip the first X in case of offset

                if (lineNbr >= _listOffset)
                {
                    if (LineToDisplay < MaxLineToDisplay)
                    {
                        refreshArray(data, linkedResult, LineToDisplay, mainResultIsUpdate, total, false);
                        LineToDisplay++;
                    }
                }
                lineNbr++;
            }

            _totalItems += compList.Count;

            _vsc.ThumbMaxValue = _totalItems;

            foreach (var data in compList)
            {
                if (LineToDisplay < MaxLineToDisplay)
                {
                    PerfTimerResult perfData = linkedResult[data];
                    refreshArray(perfData, linkedResult, LineToDisplay, mainResultIsUpdate, total, true);
                    LineToDisplay++;
                }
            }

            if (totalTimeFrame > 0)
            {
                _avgFrameTime.Text = totalTimeFrame.ToString("0.000 ms (") + (1 / totalTimeFrame * 1000.0f).ToString("0.00 fps)");
            }
            else
            {
                _avgFrameTime.Text = "Performance tracking disabled";
            }

            updateSlider();

            if (totalTimeFrame == 0)
            {
                return(0);
            }
            else
            {
                return(1 / totalTimeFrame * 1000.0f);
            }
        }