35 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			35 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using Ryujinx.Common;
 | |
| using System;
 | |
| using System.Collections.Generic;
 | |
| using System.IO;
 | |
| using System.Linq;
 | |
| 
 | |
| namespace Ryujinx.Debugger.Profiler
 | |
| {
 | |
|     public static class DumpProfile
 | |
|     {
 | |
|         public static void ToFile(string path, InternalProfile profile)
 | |
|         {
 | |
|             String fileData = "Category,Session Group,Session Item,Count,Average(ms),Total(ms)\r\n";
 | |
| 
 | |
|             foreach (KeyValuePair<ProfileConfig, TimingInfo> time in profile.Timers.OrderBy(key => key.Key.Tag))
 | |
|             {
 | |
|                 fileData += $"{time.Key.Category}," +
 | |
|                             $"{time.Key.SessionGroup}," +
 | |
|                             $"{time.Key.SessionItem}," +
 | |
|                             $"{time.Value.Count}," +
 | |
|                             $"{time.Value.AverageTime / PerformanceCounter.TicksPerMillisecond}," +
 | |
|                             $"{time.Value.TotalTime / PerformanceCounter.TicksPerMillisecond}\r\n";
 | |
|             }
 | |
| 
 | |
|             // Ensure file directory exists before write
 | |
|             FileInfo fileInfo = new FileInfo(path);
 | |
|             if (fileInfo == null)
 | |
|                 throw new Exception("Unknown logging error, probably a bad file path");
 | |
|             if (fileInfo.Directory != null && !fileInfo.Directory.Exists)
 | |
|                 Directory.CreateDirectory(fileInfo.Directory.FullName);
 | |
| 
 | |
|             File.WriteAllText(fileInfo.FullName, fileData);
 | |
|         }
 | |
|     }
 | |
| }
 | 
