private void ExtractData(int firstFrameIndex, int lastFrameIndex, string selectedPropertyPath = "") { var profilerData = ProfilerData.GetProfilerData(firstFrameIndex, lastFrameIndex, selectedPropertyPath); File.WriteAllText(filePath, profilerData.ToString()); profilerData.Clear(); }
public IList <FunctionData> CalculateStats(ProfilerColumn[] columnsToShow, ProfilerColumn sortColumn) { //using (Profiler.AddSample(Profiler.SamplerType.CalculateStats)) { var firstFrameIndex = ProfilerDriver.firstFrameIndex; var lastFrameIndex = ProfilerDriver.lastFrameIndex; var profilerData = ProfilerData.GetProfilerData(firstFrameIndex, lastFrameIndex); var frames = profilerData.frames; for (int i = 0; i < frames.Count; ++i) { var frameData = frames[i]; var functions = frameData.functions; for (int j = 0; j < functions.Count; ++j) { var functionData = functions[j]; var functionName = functionData.GetValue(ProfilerColumn.FunctionName); List <FunctionData> functionsData; if (!functionsDataByName.TryGetValue(functionName, out functionsData)) { functionsData = new List <FunctionData>(); functionsDataByName.Add(functionName, functionsData); } functionsData.Add(functionData); } } this.columnsToShow = columnsToShow; var functionStats = new List <FunctionData>(functionsDataByName.Count); foreach (var pair in functionsDataByName) { var functionName = pair.Key; var functionsData = pair.Value; functionStats.Add(AggregateFunction(functionName, functionsData)); } this.sortColumn = sortColumn; functionStats.Sort(FunctionStatsSorter); functionsDataByName.Clear(); profilerData.Clear(); return(functionStats); } }
public FunctionData[] CalculateStats(ProfilerColumn[] columnsToShow) { var firstFrameIndex = ProfilerDriver.firstFrameIndex; var lastFrameIndex = ProfilerDriver.lastFrameIndex; var profilerData = ProfilerData.GetProfilerData(firstFrameIndex, lastFrameIndex); var functionsData = profilerData.frames.SelectMany(GetFunctions); var groupedFunctionData = functionsData.GroupBy(GetFunctionName).ToArray(); this.columnsToShow = columnsToShow; var functionStats = groupedFunctionData .Select <IGrouping <string, FunctionData>, FunctionData>(AggregateFunction) .OrderByDescending(GetSelfTime) .ToArray(); return(functionStats); }