/// <summary> /// 結果書き出し /// </summary> protected override string GetResultText() { CsvStringGenerator csvStringGenerator = new CsvStringGenerator(); csvStringGenerator.AppendColumn("name").AppendColumn("sum(msec)").AppendColumn("call").AppendColumn("min(msec)").AppendColumn("max(msec)").NextRow(); var sampleDataList = new List <WorkerThreadSample>(samples.Values); sampleDataList.Sort((a, b) => { if (a.sumMsec > b.sumMsec) { return(-1); } else if (a.sumMsec < b.sumMsec) { return(1); } return(0); }); foreach (var sampleData in sampleDataList) { csvStringGenerator.AppendColumn(sampleData.sampleName). AppendColumn(sampleData.sumMsec). AppendColumn(sampleData.callNum). AppendColumn(sampleData.minMSec). AppendColumn(sampleData.maxMsec); csvStringGenerator.NextRow(); } return(csvStringGenerator.ToString()); }
private string GetCallStackInfo(ProfilerFrameData frameData, ProfilerSample profilerSample) { if (profilerSample == null) { return(""); } var callStackInfo = profilerSample.callStackInfo; if (callStackInfo == null) { return(""); } stringBuilder.Length = 0; int length = callStackInfo.stack.Length; bool isAlreadyAdd = false; for (int i = length - 1; i >= 0; --i) { var info = frameData.FindJitInfoFromAddr(callStackInfo.stack[i]); if (info == null) { continue; } if (isAlreadyAdd) { stringBuilder.Append("->"); } stringBuilder.Append("["); CsvStringGenerator.AppendAddrStr(stringBuilder, info.codeAddr, 16).Append("]"); stringBuilder.Append(info.name); isAlreadyAdd = true; } return(stringBuilder.ToString()); }
public void AppendToStringBuilder(CsvStringGenerator csvStringGenerator) { csvStringGenerator.AppendColumn(renderTime); csvStringGenerator.AppendColumn(updateDepth); csvStringGenerator.AppendColumn(opaque); csvStringGenerator.AppendColumn(transparent); csvStringGenerator.AppendColumn(imageEffect); }
/// <summary> /// 結果書き出し /// </summary> protected override string GetResultText() { CsvStringGenerator csvStringGenerator = new CsvStringGenerator(); csvStringGenerator.AppendColumn("frameIdx"); foreach (var category in System.Enum.GetValues(typeof(Category))) { csvStringGenerator.AppendColumn(category.ToString() + "(ms)"); } csvStringGenerator.AppendColumn("callNum"); foreach (var category in System.Enum.GetValues(typeof(Category))) { csvStringGenerator.AppendColumn(category.ToString() + "(calls)"); } csvStringGenerator.NextRow(); foreach (var gpuFrame in frameGpuTimes) { if (gpuFrame.gpuTimeByCategory == null) { continue; } csvStringGenerator.AppendColumn(gpuFrame.frameIdx); foreach (var category in System.Enum.GetValues(typeof(Category))) { GpuTimeInfo val; if (gpuFrame.gpuTimeByCategory.TryGetValue((int)category, out val)) { csvStringGenerator.AppendColumn((float)val.time / 1000.0f); } else { csvStringGenerator.AppendColumn(0); } } csvStringGenerator.AppendColumn(""); foreach (var category in System.Enum.GetValues(typeof(Category))) { GpuTimeInfo val; if (gpuFrame.gpuTimeByCategory.TryGetValue((int)category, out val)) { csvStringGenerator.AppendColumn(val.count); } else { csvStringGenerator.AppendColumn(0); } } csvStringGenerator.NextRow(); } return(csvStringGenerator.ToString()); }
/// <summary> /// 結果書き出し /// </summary> protected override string GetResultText() { CsvStringGenerator csvStringGenerator = new CsvStringGenerator(); csvStringGenerator.AppendColumn("frameIdx"); for (int i = 0; i < GPUTime.SECTION_NUM; ++i) { csvStringGenerator.AppendColumn(((GPUTime.GpuSection)i).ToString() + "(ms)"); } csvStringGenerator.AppendColumn("callNum"); for (int i = 0; i < GPUTime.SECTION_NUM; ++i) { csvStringGenerator.AppendColumn(((GPUTime.GpuSection)i).ToString() + "(calls)"); } csvStringGenerator.NextRow(); foreach (var gpuFrame in frameGpuTimes) { if (gpuFrame.gpuTimeByCategory == null) { continue; } csvStringGenerator.AppendColumn(gpuFrame.frameIdx); for (int i = 0; i < GPUTime.SECTION_NUM; ++i) { GpuTimeInfo val; if (gpuFrame.gpuTimeByCategory.TryGetValue(i, out val)) { csvStringGenerator.AppendColumn((float)val.time / 1000.0f); } else { csvStringGenerator.AppendColumn(0); } } csvStringGenerator.AppendColumn(""); for (int i = 0; i < GPUTime.SECTION_NUM; ++i) { GpuTimeInfo val; if (gpuFrame.gpuTimeByCategory.TryGetValue(i, out val)) { csvStringGenerator.AppendColumn(val.count); } else { csvStringGenerator.AppendColumn(0); } } csvStringGenerator.NextRow(); } return(csvStringGenerator.ToString()); }
private void AppendHeaderToStringBuilder(CsvStringGenerator csvStringGenerator) { csvStringGenerator.AppendColumn("Address"); // Total csvStringGenerator.AppendColumn("Code Size"); csvStringGenerator.AppendColumn("FunctionName"); csvStringGenerator.AppendColumn("SourceFile"); csvStringGenerator.AppendColumn("SourceLine"); csvStringGenerator.NextRow(); }
/// <summary> /// 結果書き出し /// </summary> protected override string GetResultText() { CsvStringGenerator csvStringGenerator = new CsvStringGenerator(); AppendHeaderToStringBuilder(csvStringGenerator); for (int i = 0; i < memoryStatsList.Count; ++i) { MemoryStats memoryStats = memoryStatsList[i]; csvStringGenerator.AppendColumn(frameIdxList[i]); csvStringGenerator.AppendColumn(""); // Used Memory csvStringGenerator.AppendColumn(memoryStats.bytesUsedTotal); csvStringGenerator.AppendColumn(memoryStats.bytesUsedUnity); csvStringGenerator.AppendColumn(memoryStats.bytesUsedMono); csvStringGenerator.AppendColumn(memoryStats.bytesUsedGFX); csvStringGenerator.AppendColumn(memoryStats.bytesUsedFMOD); csvStringGenerator.AppendColumn(memoryStats.bytesUsedVideo); csvStringGenerator.AppendColumn(memoryStats.bytesUsedProfiler); csvStringGenerator.AppendColumn(""); // Reserved Memory csvStringGenerator.AppendColumn(memoryStats.bytesReservedTotal); csvStringGenerator.AppendColumn(memoryStats.bytesReservedUnity); csvStringGenerator.AppendColumn(memoryStats.bytesReservedMono); csvStringGenerator.AppendColumn(memoryStats.bytesReservedFMOD); csvStringGenerator.AppendColumn(memoryStats.bytesReservedVideo); csvStringGenerator.AppendColumn(memoryStats.bytesReservedProfiler); csvStringGenerator.AppendColumn(""); // by Assets csvStringGenerator.AppendColumn(memoryStats.textureCount); csvStringGenerator.AppendColumn(memoryStats.textureBytes); csvStringGenerator.AppendColumn(memoryStats.meshCount); csvStringGenerator.AppendColumn(memoryStats.meshBytes); csvStringGenerator.AppendColumn(memoryStats.materialCount); csvStringGenerator.AppendColumn(memoryStats.materialBytes); csvStringGenerator.AppendColumn(memoryStats.audioCount); csvStringGenerator.AppendColumn(memoryStats.audioBytes); csvStringGenerator.AppendColumn(memoryStats.assetCount); csvStringGenerator.AppendColumn(memoryStats.gameObjectCount); csvStringGenerator.AppendColumn(memoryStats.sceneObjectCount); csvStringGenerator.AppendColumn(memoryStats.totalObjectsCount); csvStringGenerator.AppendColumn(""); // GC csvStringGenerator.AppendColumn(memoryStats.frameGCAllocCount); csvStringGenerator.AppendColumn(memoryStats.frameGCAllocBytes); csvStringGenerator.NextRow(); } return(csvStringGenerator.ToString()); }
private void AppendHeaderToStringBuilder(CsvStringGenerator csvStringGenerator) { csvStringGenerator.AppendColumn("frameIdx"); csvStringGenerator.AppendColumn("file"); csvStringGenerator.AppendColumn("event"); csvStringGenerator.AppendColumn("thread"); csvStringGenerator.AppendColumn("param"); csvStringGenerator.AppendColumn("size"); csvStringGenerator.AppendColumn("seekOffset"); csvStringGenerator.AppendColumn("execTime"); csvStringGenerator.AppendColumn("fullPath"); csvStringGenerator.NextRow(); }
private void AppendHeaderToStringBuilder(CsvStringGenerator csvStringGenerator) { csvStringGenerator.AppendColumn("thread"); // Total csvStringGenerator.AppendColumn("SampleName"); csvStringGenerator.AppendColumn("FullName"); csvStringGenerator.AppendColumn("calls"); csvStringGenerator.AppendColumn("all(byte)"); csvStringGenerator.AppendColumn("average(byte)"); csvStringGenerator.AppendColumn("min(byte)"); csvStringGenerator.AppendColumn("max(byte)"); csvStringGenerator.NextRow(); }
public void AppendCsv(CsvStringGenerator csvStringGenerator, List <string> categoriesStr) { foreach (var category in categoriesStr) { float val; if (!frameData.TryGetValue(category, out val)) { val = 0.0f; } csvStringGenerator.AppendColumn(val); } }
private void AppendHeaderToStringBuilder(CsvStringGenerator csvStringGenerator) { csvStringGenerator.AppendColumn("frameIdx"); // Total csvStringGenerator.AppendColumn("Total"); csvStringGenerator.AppendColumn("setPassCalls"); csvStringGenerator.AppendColumn("drawCalls"); csvStringGenerator.AppendColumn("batches"); csvStringGenerator.AppendColumn("triangles"); csvStringGenerator.AppendColumn("vertices"); // DynamicBatching csvStringGenerator.AppendColumn("DynamicBatching"); csvStringGenerator.AppendColumn("dynamicBatchedDrawCalls"); csvStringGenerator.AppendColumn("dynamicBatchedTriangles"); csvStringGenerator.AppendColumn("dynamicBatchedTriangles"); csvStringGenerator.AppendColumn("dynamicBatchedVertices"); // static batching csvStringGenerator.AppendColumn("StaticBatching"); csvStringGenerator.AppendColumn("staticBatchedDrawCalls"); csvStringGenerator.AppendColumn("staticBatchedTriangles"); csvStringGenerator.AppendColumn("staticBatchedTriangles"); csvStringGenerator.AppendColumn("staticBatchedVertices"); // instancing csvStringGenerator.AppendColumn("Instancing"); csvStringGenerator.AppendColumn("hasInstancing"); csvStringGenerator.AppendColumn("instancedBatchedDrawCalls"); csvStringGenerator.AppendColumn("instancedBatches"); csvStringGenerator.AppendColumn("instancedTriangles"); csvStringGenerator.AppendColumn("instancedVertices"); //screen Info csvStringGenerator.AppendColumn("ScreenInfo"); csvStringGenerator.AppendColumn("screenWidth"); csvStringGenerator.AppendColumn("screenHeight"); csvStringGenerator.AppendColumn("screenBytes"); // RenderTexture Info csvStringGenerator.AppendColumn("RenderTextureInfo"); csvStringGenerator.AppendColumn("renderTextureCount"); csvStringGenerator.AppendColumn("renderTextureBytes"); csvStringGenerator.AppendColumn("renderTextureStateChanges"); // SkinnedMesh csvStringGenerator.AppendColumn("SkinnedMesh"); csvStringGenerator.AppendColumn("visibleSkinnedMeshes"); // etc... csvStringGenerator.AppendColumn("etc"); csvStringGenerator.AppendColumn("totalAvailableVRamMBytes"); csvStringGenerator.AppendColumn("vboTotal"); csvStringGenerator.AppendColumn("vboUploads"); csvStringGenerator.AppendColumn("ibUploads"); csvStringGenerator.AppendColumn("shadowCasters"); csvStringGenerator.NextRow(); }
public void AppendToCsvGenerator(CsvStringGenerator csvStringGenerator) { csvStringGenerator.AppendColumn(frameIdx); csvStringGenerator.AppendColumn(processCommandsTime); csvStringGenerator.AppendColumn(waitForCommandsTime); csvStringGenerator.AppendColumn(scheduleGeometryJobTime); csvStringGenerator.AppendColumn(scheduleGeometryJobNum); csvStringGenerator.AppendColumn(presentFrameTime); csvStringGenerator.AppendColumn(guiRepaint); csvStringGenerator.AppendColumn(cameraRenders.Count); foreach (var cameraRender in cameraRenders) { csvStringGenerator.AppendColumn(""); cameraRender.AppendToStringBuilder(csvStringGenerator); } }
private void AppendHeaderToStringBuilder(CsvStringGenerator csvStringGenerator) { csvStringGenerator.AppendColumn("frameIdx"); csvStringGenerator.AppendColumn("UsedMemory"); // Used Memory csvStringGenerator.AppendColumn("bytesUsedTotal"); csvStringGenerator.AppendColumn("bytesUsedUnity"); csvStringGenerator.AppendColumn("bytesUsedMono"); csvStringGenerator.AppendColumn("bytesUsedGFX"); csvStringGenerator.AppendColumn("bytesUsedFMOD"); csvStringGenerator.AppendColumn("bytesUsedVideo"); csvStringGenerator.AppendColumn("bytesUsedProfiler"); csvStringGenerator.AppendColumn("ReservedMemory"); // Reserved Memory csvStringGenerator.AppendColumn("bytesReservedTotal"); csvStringGenerator.AppendColumn("bytesReservedUnity"); csvStringGenerator.AppendColumn("bytesReservedMono"); csvStringGenerator.AppendColumn("bytesReservedFMOD"); csvStringGenerator.AppendColumn("bytesReservedVideo"); csvStringGenerator.AppendColumn("bytesReservedProfiler"); csvStringGenerator.AppendColumn("AssetUsage"); // by Assets csvStringGenerator.AppendColumn("textureCount"); csvStringGenerator.AppendColumn("textureBytes"); csvStringGenerator.AppendColumn("meshCount"); csvStringGenerator.AppendColumn("meshBytes"); csvStringGenerator.AppendColumn("meshCount"); csvStringGenerator.AppendColumn("meshBytes"); csvStringGenerator.AppendColumn("materialCount"); csvStringGenerator.AppendColumn("materialBytes"); csvStringGenerator.AppendColumn("audioCount"); csvStringGenerator.AppendColumn("audioBytes"); csvStringGenerator.AppendColumn("assetCount"); csvStringGenerator.AppendColumn("gameObjectCount"); csvStringGenerator.AppendColumn("sceneObjectCount"); csvStringGenerator.AppendColumn("totalObjectsCount"); csvStringGenerator.AppendColumn("GC"); // GC csvStringGenerator.AppendColumn("frameGCAllocCount"); csvStringGenerator.AppendColumn("frameGCAllocBytes"); csvStringGenerator.NextRow(); }
/// <summary> /// 結果書き出し /// </summary> protected override string GetResultText() { CsvStringGenerator csvStringGenerator = new CsvStringGenerator(); int frameNum = 0; var threadViewDataList = new List <ThreadViewData>(viewData.Values); foreach (var data in threadViewDataList) { if (data.threadName == FrameWholeDataSpecialKey) { csvStringGenerator.AppendColumn(data.threadName).AppendColumn(""); } else { csvStringGenerator.AppendColumn(data.threadName + "(msec)"); csvStringGenerator.AppendColumn("idle(msec)"); csvStringGenerator.AppendColumn("working(msec)"); csvStringGenerator.AppendColumn("rootBlock"); csvStringGenerator.AppendColumn("idleBlock").AppendColumn(""); } frameNum = ProfilerLogUtil.Max(data.maxFrame, frameNum); } csvStringGenerator.NextRow(); for (int i = 0; i < frameNum; ++i) { foreach (var data in threadViewDataList) { int totalCnt, idleCnt; float total, idle; data.GetMSecData(i, out total, out idle, out totalCnt, out idleCnt); if (data.threadName == FrameWholeDataSpecialKey) { csvStringGenerator.AppendColumn(total).AppendColumn(""); } else { csvStringGenerator.AppendColumn(total).AppendColumn(idle).AppendColumn(total - idle); csvStringGenerator.AppendColumn(totalCnt).AppendColumn(idleCnt).AppendColumn(""); } } csvStringGenerator.NextRow(); } return(csvStringGenerator.ToString()); }
/// <summary> /// 結果書き出し /// </summary> protected override string GetResultText() { CsvStringGenerator csvStringGenerator = new CsvStringGenerator(); csvStringGenerator.AppendColumn("name").AppendColumn("fullname").AppendColumn("category").AppendColumn("callNum"). AppendColumn("self").AppendColumn("sum(msec)").AppendColumn("perFrame(msec)").AppendColumn("min(msec)").AppendColumn("max(msec)"). AppendColumn("total").AppendColumn("sum(msec)").AppendColumn("perFrame(msec)").AppendColumn("min(msec)").AppendColumn("max(msec)"). NextRow(); var sampleDataList = new List <SampleData>(samples.Values); sampleDataList.Sort((a, b) => { if (a.totalSelfMsec > b.totalSelfMsec) { return(-1); } else if (a.totalSelfMsec < b.totalSelfMsec) { return(1); } return(0); }); foreach (var sampleData in sampleDataList) { csvStringGenerator.AppendColumn(sampleData.sampleName). AppendColumn(sampleData.fullName). AppendColumn(sampleData.categoryName). AppendColumn(sampleData.callNum).AppendColumn(""); csvStringGenerator.AppendColumn(sampleData.totalSelfMsec). AppendColumn(sampleData.totalSelfMsec / frameNum). AppendColumn(sampleData.selfMinMSec). AppendColumn(sampleData.selfMaxMsec).AppendColumn(""); csvStringGenerator.AppendColumn(sampleData.totalExecMsec). AppendColumn(sampleData.totalExecMsec / frameNum). AppendColumn(sampleData.execMinMSec). AppendColumn(sampleData.execMaxMsec); csvStringGenerator.NextRow(); } return(csvStringGenerator.ToString()); }
/// <summary> /// 結果書き出し /// </summary> protected override string GetResultText() { CsvStringGenerator csvStringGenerator = new CsvStringGenerator(); AppendHeaderToStringBuilder(csvStringGenerator); foreach (var kvs in gcDitionary) { csvStringGenerator.AppendColumn(kvs.Key.threadName); csvStringGenerator.AppendColumn(kvs.Key.methodName); csvStringGenerator.AppendColumn(kvs.Key.fullMethodName); csvStringGenerator.AppendColumn(kvs.Value.allocNum); csvStringGenerator.AppendColumn(kvs.Value.allocAll); csvStringGenerator.AppendColumn(kvs.Value.allocAll / kvs.Value.allocNum); csvStringGenerator.AppendColumn(kvs.Value.allocMin); csvStringGenerator.AppendColumn(kvs.Value.allocMax); csvStringGenerator.NextRow(); } return(csvStringGenerator.ToString()); }
/// <summary> /// 結果書き出し /// </summary> protected override string GetResultText() { CsvStringGenerator csvStringGenerator = new CsvStringGenerator(); AppendHeaderToStringBuilder(csvStringGenerator); fileEvents.Sort((a, b) => { if (a.startTime > b.startTime) { return(1); } else if (a.startTime < b.startTime) { return(-1); } return(0); }); foreach (var evt in fileEvents) { int filePathIdx = 0; int length = 0; if (evt.file != null) { filePathIdx = evt.file.LastIndexOf('/') + 1; length = evt.file.Length; } csvStringGenerator.AppendColumn(evt.frameIdx); csvStringGenerator.AppendColumn(evt.file, filePathIdx, length - filePathIdx); csvStringGenerator.AppendColumn(evt.eventStr); csvStringGenerator.AppendColumn(evt.thread); csvStringGenerator.AppendColumn(evt.param); csvStringGenerator.AppendColumn(evt.size); csvStringGenerator.AppendColumn(evt.seekOffset); csvStringGenerator.AppendColumn(evt.tm); csvStringGenerator.AppendColumn(evt.file); csvStringGenerator.NextRow(); } return(csvStringGenerator.ToString()); }
/// <summary> /// 結果書き出し /// </summary> protected override string GetResultText() { CsvStringGenerator csvStringGenerator = new CsvStringGenerator(); csvStringGenerator.AppendColumn("frameIdx"); foreach (var str in categoriesStr) { csvStringGenerator.AppendColumn(str + "(msec)"); } csvStringGenerator.NextRow(); foreach (var frame in frames) { csvStringGenerator.AppendColumn(frame.frameIdx); frame.AppendCsv(csvStringGenerator, this.categoriesStr); csvStringGenerator.NextRow(); } return(csvStringGenerator.ToString()); }
/// <summary> /// 結果書き出し /// </summary> protected override string GetResultText() { CsvStringGenerator csvStringGenerator = new CsvStringGenerator(); csvStringGenerator.AppendColumn("frameIdx").AppendColumn("processCommandsTime"). AppendColumn("waitForCommandsTime").AppendColumn("scheduleGeometryJobTime").AppendColumn("scheduleGeometryJobNum").AppendColumn("presentFrameTime").AppendColumn("guiRepaint").AppendColumn("cameraRenders"); for (int i = 0; i < maxCameraNum; ++i) { csvStringGenerator.AppendColumn("Camera" + i); csvStringGenerator.AppendColumn("renderTime").AppendColumn("updateDepth").AppendColumn("opaque").AppendColumn("transparent").AppendColumn("imageEffect"); } csvStringGenerator.NextRow(); foreach (var frameRenderingData in this.frameRenderingDatas) { frameRenderingData.AppendToCsvGenerator(csvStringGenerator); csvStringGenerator.NextRow(); } return(csvStringGenerator.ToString()); }
/// <summary> /// 結果書き出し /// </summary> protected override string GetResultText() { CsvStringGenerator csvStringGenerator = new CsvStringGenerator(); AppendHeaderToStringBuilder(csvStringGenerator); List <JitInfo> sortedJitInfo = new List <JitInfo>(this.jitInfoDict.Values); sortedJitInfo.Sort(new JitInfo.CompareByAddr()); foreach (var jitInfo in sortedJitInfo) { string name = jitInfo.name; string sourceFileName = jitInfo.sourceFileName; csvStringGenerator.AppendColumnAsAddr(jitInfo.codeAddr); csvStringGenerator.AppendColumn(jitInfo.size); csvStringGenerator.AppendColumn(name); csvStringGenerator.AppendColumn(sourceFileName); csvStringGenerator.AppendColumn(jitInfo.sourceFileLine); csvStringGenerator.NextRow(); } return(csvStringGenerator.ToString()); }
/// <summary> /// 結果書き出し /// </summary> protected override string GetResultText() { CsvStringGenerator csvStringGenerator = new CsvStringGenerator(); csvStringGenerator.AppendColumn("frameIdx"); csvStringGenerator.AppendColumn("Shader") .AppendColumn("exec(ms)").AppendColumn("isWarmupCall"); if (this.hasPassStageKeywordsInfo) { csvStringGenerator.AppendColumn("pass") .AppendColumn("stage") .AppendColumn("keyword"); } csvStringGenerator.NextRow(); foreach (var compileInfo in this.compileInfos) { if (compileInfo == null) { continue; } csvStringGenerator.AppendColumn(compileInfo.frameIdx) .AppendColumn(compileInfo.shader) .AppendColumn(compileInfo.msec) .AppendColumn(compileInfo.callFromWarmup); if (this.hasPassStageKeywordsInfo) { csvStringGenerator.AppendColumn(compileInfo.pass). AppendColumn(compileInfo.stage). AppendColumn(compileInfo.keywords); } csvStringGenerator.NextRow(); } return(csvStringGenerator.ToString()); }
/// <summary> /// 結果書き出し /// </summary> protected override string GetResultText() { CsvStringGenerator csvStringGenerator = new CsvStringGenerator(); AppendHeaderToStringBuilder(csvStringGenerator); for (int i = 0; i < drawStatsList.Count; ++i) { DrawStats drawStats = drawStatsList[i]; csvStringGenerator.AppendColumn(frameIdxList[i]); csvStringGenerator.AppendColumn(""); // Total csvStringGenerator.AppendColumn(drawStats.setPassCalls); csvStringGenerator.AppendColumn(drawStats.drawCalls); csvStringGenerator.AppendColumn(drawStats.batches); csvStringGenerator.AppendColumn(drawStats.triangles); csvStringGenerator.AppendColumn(drawStats.vertices); csvStringGenerator.AppendColumn(""); // DynamicBatching csvStringGenerator.AppendColumn(drawStats.dynamicBatchedDrawCalls); csvStringGenerator.AppendColumn(drawStats.dynamicBatchedTriangles); csvStringGenerator.AppendColumn(drawStats.dynamicBatchedTriangles); csvStringGenerator.AppendColumn(drawStats.dynamicBatchedVertices); csvStringGenerator.AppendColumn(""); // static batching csvStringGenerator.AppendColumn(drawStats.staticBatchedDrawCalls); csvStringGenerator.AppendColumn(drawStats.staticBatchedTriangles); csvStringGenerator.AppendColumn(drawStats.staticBatchedTriangles); csvStringGenerator.AppendColumn(drawStats.staticBatchedVertices); // instancing csvStringGenerator.AppendColumn(""); csvStringGenerator.AppendColumn(drawStats.hasInstancing); csvStringGenerator.AppendColumn(drawStats.instancedBatchedDrawCalls); csvStringGenerator.AppendColumn(drawStats.instancedBatches); csvStringGenerator.AppendColumn(drawStats.instancedTriangles); csvStringGenerator.AppendColumn(drawStats.instancedVertices); //screen Info csvStringGenerator.AppendColumn(""); csvStringGenerator.AppendColumn(drawStats.screenWidth); csvStringGenerator.AppendColumn(drawStats.screenHeight); csvStringGenerator.AppendColumn(drawStats.screenBytes); // RenderTexture Info csvStringGenerator.AppendColumn(""); csvStringGenerator.AppendColumn(drawStats.renderTextureCount); csvStringGenerator.AppendColumn(drawStats.renderTextureBytes); csvStringGenerator.AppendColumn(drawStats.renderTextureStateChanges); // SkinnedMesh csvStringGenerator.AppendColumn(""); csvStringGenerator.AppendColumn(drawStats.visibleSkinnedMeshes); // etc... csvStringGenerator.AppendColumn(""); csvStringGenerator.AppendColumn(drawStats.totalAvailableVRamMBytes); csvStringGenerator.AppendColumn(drawStats.vboTotal); csvStringGenerator.AppendColumn(drawStats.vboUploads); csvStringGenerator.AppendColumn(drawStats.ibUploads); csvStringGenerator.AppendColumn(drawStats.shadowCasters); csvStringGenerator.NextRow(); } return(csvStringGenerator.ToString()); }