1
0
mirror of https://github.com/ppy/osu.git synced 2024-12-14 04:52:57 +08:00

Fix abysmal debug performance due to try-catch logic in DrawableRulesetDependencies

This commit is contained in:
Dean Herbert 2023-04-03 18:04:33 +09:00
parent 43d7386623
commit 7011928d86

View File

@ -206,17 +206,26 @@ namespace osu.Game.Rulesets.UI
this.parent = parent;
}
// When the debugger is attached, exceptions are expensive.
// Manually work around this by caching failed lookups and falling back straight to parent.
private readonly HashSet<(string, string)> failedLookups = new HashSet<(string, string)>();
public override IShader Load(string vertex, string fragment)
{
try
if (!failedLookups.Contains((vertex, fragment)))
{
return base.Load(vertex, fragment);
}
catch
{
// Shader lookup is very non-standard. Rather than returning null on missing shaders, exceptions are thrown.
return parent.Load(vertex, fragment);
try
{
return base.Load(vertex, fragment);
}
catch
{
// Shader lookup is very non-standard. Rather than returning null on missing shaders, exceptions are thrown.
failedLookups.Add((vertex, fragment));
}
}
return parent.Load(vertex, fragment);
}
}
}