match more methods

This commit is contained in:
JohnCorby 2025-01-29 15:52:40 -08:00
parent f5ac2fd920
commit 68c969493f

View File

@ -2,7 +2,6 @@
using HarmonyLib; using HarmonyLib;
using System.Collections.Generic; using System.Collections.Generic;
using System.Diagnostics;
using System.Reflection; using System.Reflection;
using UnityEngine.Profiling; using UnityEngine.Profiling;
@ -14,19 +13,28 @@ namespace NewHorizons.Patches;
[HarmonyPatch] [HarmonyPatch]
public static class ProfilerPatch public static class ProfilerPatch
{ {
private static string FriendlyName(this MethodBase @this) => $"{@this.DeclaringType.Name}.{@this.Name}";
[HarmonyTargetMethods] [HarmonyTargetMethods]
public static IEnumerable<MethodBase> TargetMethods() public static IEnumerable<MethodBase> TargetMethods()
{ {
foreach (var type in Assembly.GetExecutingAssembly().GetTypes()) 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 (!(
if (method.IsGenericMethod) continue; 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; yield return method;
} }
} }
@ -35,7 +43,7 @@ public static class ProfilerPatch
[HarmonyPrefix] [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 = new Stopwatch();
// __state.Start(); // __state.Start();
@ -47,6 +55,6 @@ public static class ProfilerPatch
Profiler.EndSample(); Profiler.EndSample();
// __state.Stop(); // __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");
} }
} }