aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Debugger/Profiler/DumpProfile.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Ryujinx.Debugger/Profiler/DumpProfile.cs')
-rw-r--r--Ryujinx.Debugger/Profiler/DumpProfile.cs35
1 files changed, 35 insertions, 0 deletions
diff --git a/Ryujinx.Debugger/Profiler/DumpProfile.cs b/Ryujinx.Debugger/Profiler/DumpProfile.cs
new file mode 100644
index 00000000..e73314d4
--- /dev/null
+++ b/Ryujinx.Debugger/Profiler/DumpProfile.cs
@@ -0,0 +1,35 @@
+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);
+ }
+ }
+}