recover scripts execution time stat i lost on previus changes. Behing async, this will not add with other time stats giving total frame time, as happens on other simulators. But its a good diag stat.

avinationmerge
UbitUmarov 2015-10-21 18:34:06 +01:00
parent f84b75b1e0
commit e464bf5d82
2 changed files with 10 additions and 5 deletions

View File

@ -1904,14 +1904,17 @@ namespace OpenSim.Region.Framework.Scenes
}
/// <summary>
/// Returns the total execution time of all the scripts in the region since the last frame
/// (in milliseconds), and clears the value in preparation for the next frame.
/// Returns the total execution time of all the scripts in the region since the last call
/// (in milliseconds), and clears the value in preparation for the next call.
/// </summary>
/// <returns>Time in milliseconds</returns>
private long GetAndResetScriptExecutionTime()
// Warning: this is now called from StatsReporter, and can't be shared
public long GetAndResetScriptExecutionTime()
{
long ticks = Interlocked.Exchange(ref m_scriptExecutionTime, 0);
return (ticks * 1000) / Stopwatch.Frequency;
return (ticks * 1000L) / Stopwatch.Frequency;
}
public void AddGroupTarget(SceneObjectGroup grp)

View File

@ -412,6 +412,8 @@ namespace OpenSim.Region.Framework.Scenes
if (m_otherMS < 0)
m_otherMS = 0;
float scriptTimeMS = m_scene.GetAndResetScriptExecutionTime();
for (int i = 0; i < m_statisticViewerArraySize; i++)
{
sb[i] = new SimStatsPacket.StatBlock();
@ -533,7 +535,7 @@ namespace OpenSim.Region.Framework.Scenes
sb[36].StatValue = 0;
sb[37].StatID = (uint)Stats.ScriptMS;
sb[37].StatValue = 0;
sb[37].StatValue = scriptTimeMS * perframefactor;
for (int i = 0; i < m_statisticViewerArraySize; i++)