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:
parent
43d7386623
commit
7011928d86
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user