mirror of
https://github.com/ppy/osu.git
synced 2024-12-14 23:05:37 +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;
|
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)
|
public override IShader Load(string vertex, string fragment)
|
||||||
{
|
{
|
||||||
try
|
if (!failedLookups.Contains((vertex, fragment)))
|
||||||
{
|
{
|
||||||
return base.Load(vertex, fragment);
|
try
|
||||||
}
|
{
|
||||||
catch
|
return base.Load(vertex, fragment);
|
||||||
{
|
}
|
||||||
// Shader lookup is very non-standard. Rather than returning null on missing shaders, exceptions are thrown.
|
catch
|
||||||
return parent.Load(vertex, fragment);
|
{
|
||||||
|
// 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