forked from mirror/DotRecast
Avoid allocation in ScopedTimer call
This commit is contained in:
parent
01b3bcf771
commit
3158dfc29c
|
@ -27,6 +27,24 @@ namespace DotRecast.Detour.Crowd
|
||||||
{
|
{
|
||||||
public class DtCrowdTelemetry
|
public class DtCrowdTelemetry
|
||||||
{
|
{
|
||||||
|
public readonly struct DisposableHandle : IDisposable
|
||||||
|
{
|
||||||
|
private readonly DtCrowdTimerLabel _label;
|
||||||
|
private readonly DtCrowdTelemetry _telemetry;
|
||||||
|
|
||||||
|
public DisposableHandle(DtCrowdTelemetry telemetry, DtCrowdTimerLabel label)
|
||||||
|
{
|
||||||
|
_telemetry = telemetry;
|
||||||
|
_label = label;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Dispose()
|
||||||
|
{
|
||||||
|
_telemetry.Stop(_label);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public const int TIMING_SAMPLES = 10;
|
public const int TIMING_SAMPLES = 10;
|
||||||
private float _maxTimeToEnqueueRequest;
|
private float _maxTimeToEnqueueRequest;
|
||||||
private float _maxTimeToFindPath;
|
private float _maxTimeToFindPath;
|
||||||
|
@ -69,10 +87,10 @@ namespace DotRecast.Detour.Crowd
|
||||||
_maxTimeToFindPath = Math.Max(_maxTimeToFindPath, time);
|
_maxTimeToFindPath = Math.Max(_maxTimeToFindPath, time);
|
||||||
}
|
}
|
||||||
|
|
||||||
public IDisposable ScopedTimer(DtCrowdTimerLabel label)
|
public DisposableHandle ScopedTimer(DtCrowdTimerLabel label)
|
||||||
{
|
{
|
||||||
Start(label);
|
Start(label);
|
||||||
return new RcAnonymousDisposable(() => Stop(label));
|
return new DisposableHandle(this, label);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Start(DtCrowdTimerLabel name)
|
private void Start(DtCrowdTimerLabel name)
|
||||||
|
|
Loading…
Reference in New Issue