From 68c969493fc68d86a8e29dcae4d08600edeb5334 Mon Sep 17 00:00:00 2001 From: JohnCorby Date: Wed, 29 Jan 2025 15:52:40 -0800 Subject: [PATCH] match more methods --- NewHorizons/Patches/ProfilerPatch.cs | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/NewHorizons/Patches/ProfilerPatch.cs b/NewHorizons/Patches/ProfilerPatch.cs index 4aba993c..b6650d7e 100644 --- a/NewHorizons/Patches/ProfilerPatch.cs +++ b/NewHorizons/Patches/ProfilerPatch.cs @@ -2,7 +2,6 @@ using HarmonyLib; using System.Collections.Generic; -using System.Diagnostics; using System.Reflection; using UnityEngine.Profiling; @@ -14,39 +13,48 @@ namespace NewHorizons.Patches; [HarmonyPatch] public static class ProfilerPatch { + private static string FriendlyName(this MethodBase @this) => $"{@this.DeclaringType.Name}.{@this.Name}"; + [HarmonyTargetMethods] public static IEnumerable TargetMethods() { foreach (var type in Assembly.GetExecutingAssembly().GetTypes()) { - if (!type.Name.EndsWith("Builder")) continue; + // if (!type.Name.EndsWith("Builder")) continue; + // if (!(type.FullName.Contains("Builder") || type.FullName.Contains("Utility"))) continue; - foreach (var method in type.GetRuntimeMethods()) + foreach (var method in type.GetMethods(BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.DeclaredOnly)) { - if (!(method.Name.StartsWith("Make") || method.Name.StartsWith("Init"))) continue; - if (method.IsGenericMethod) continue; + if (!( + method.Name.Contains("Make") || + method.Name.Contains("Init") || + method.Name.Contains("Find") || + method.Name.Contains("OnSceneLoaded") + )) continue; - Main.Instance.ModHelper.Console.WriteLine($"[profiler] profiling {method.DeclaringType.Name}.{method.Name}"); + if (method.ContainsGenericParameters) continue; + + Main.Instance.ModHelper.Console.WriteLine($"[profiler] profiling {method.FriendlyName()}"); yield return method; } } } [HarmonyPrefix] - public static void Prefix(MethodBase __originalMethod/*, out Stopwatch __state*/) + public static void Prefix(MethodBase __originalMethod /*, out Stopwatch __state*/) { - Profiler.BeginSample($"{__originalMethod.DeclaringType.Name}.{__originalMethod.Name}"); + Profiler.BeginSample(__originalMethod.FriendlyName()); // __state = new Stopwatch(); // __state.Start(); } [HarmonyPostfix] - public static void Postfix(/*MethodBase __originalMethod, Stopwatch __state*/) + public static void Postfix( /*MethodBase __originalMethod, Stopwatch __state*/) { Profiler.EndSample(); // __state.Stop(); - // Main.Instance.ModHelper.Console.WriteLine($"[profiler] {__originalMethod.DeclaringType.Name}.{__originalMethod.Name} took {__state.Elapsed.TotalMilliseconds:f1} ms"); + // Main.Instance.ModHelper.Console.WriteLine($"[profiler] {__originalMethod.MethodName()} took {__state.Elapsed.TotalMilliseconds:f1} ms"); } }