When scripts are sleeping, don't count that as execution time

Sleeping doesn't use the CPU.
This commit is contained in:
Oren Hurvitz
2015-08-06 09:54:20 +03:00
parent d24528b3bc
commit a568f06b7f
18 changed files with 95 additions and 49 deletions

View File

@@ -207,6 +207,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance
private EventWaitHandle m_coopSleepHandle;
private Stopwatch executionTimer = new Stopwatch();
public void ClearQueue()
{
m_TimerQueued = false;
@@ -278,7 +280,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance
foreach (string api in am.GetApis())
{
m_Apis[api] = am.CreateApi(api);
m_Apis[api].Initialize(Engine, Part, ScriptTask, m_coopSleepHandle);
m_Apis[api].Initialize(Engine, Part, ScriptTask, m_coopSleepHandle, executionTimer);
}
try
@@ -753,8 +755,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance
if (Suspended)
return 0;
Stopwatch timer = new Stopwatch();
timer.Start();
executionTimer.Restart();
try
{
@@ -762,9 +763,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance
}
finally
{
timer.Stop();
ExecutionTime.AddSample(timer);
Part.ParentGroup.Scene.AddScriptExecutionTime(timer.ElapsedTicks);
executionTimer.Stop();
ExecutionTime.AddSample(executionTimer);
Part.ParentGroup.Scene.AddScriptExecutionTime(executionTimer.ElapsedTicks);
}
}
}