Add option native step frame ms stat

0.7.4.1
Justin Clark-Casey (justincc) 2012-06-01 01:58:28 +01:00
parent f2c8c7a7b8
commit 5cc9b820e5
1 changed files with 21 additions and 9 deletions

View File

@ -150,6 +150,11 @@ namespace OpenSim.Region.Physics.OdePlugin
/// </remarks> /// </remarks>
public const string ODETotalFrameMsStatName = "ODETotalFrameMS"; public const string ODETotalFrameMsStatName = "ODETotalFrameMS";
/// <summary>
/// The amount of time spent in native code that actually steps through the simulation.
/// </summary>
public const string ODENativeStepFrameMsStatName = "ODENativeStepFrameMS";
/// <summary> /// <summary>
/// Stat name for recording the number of milliseconds that ODE spends in native collision code. /// Stat name for recording the number of milliseconds that ODE spends in native collision code.
/// </summary> /// </summary>
@ -2821,23 +2826,23 @@ namespace OpenSim.Region.Physics.OdePlugin
/// <summary> /// <summary>
/// This is our main simulate loop /// This is our main simulate loop
/// </summary>
/// <remarks>
/// It's thread locked by a Mutex in the scene. /// It's thread locked by a Mutex in the scene.
/// It holds Collisions, it instructs ODE to step through the physical reactions /// It holds Collisions, it instructs ODE to step through the physical reactions
/// It moves the objects around in memory /// It moves the objects around in memory
/// It calls the methods that report back to the object owners.. (scenepresence, SceneObjectGroup) /// It calls the methods that report back to the object owners.. (scenepresence, SceneObjectGroup)
/// </summary> /// </remarks>
/// <param name="timeStep"></param> /// <param name="timeStep"></param>
/// <returns>The number of frames simulated over that period.</returns> /// <returns>The number of frames simulated over that period.</returns>
public override float Simulate(float timeStep) public override float Simulate(float timeStep)
{ {
int startFrameTick = Util.EnvironmentTickCount(); int startFrameTick = CollectStats ? Util.EnvironmentTickCount() : 0;
int quickStepTick = 0;
if (framecount >= int.MaxValue) if (framecount >= int.MaxValue)
framecount = 0; framecount = 0;
//if (m_worldOffset != Vector3.Zero)
// return 0;
framecount++; framecount++;
float fps = 0; float fps = 0;
@ -2845,7 +2850,7 @@ namespace OpenSim.Region.Physics.OdePlugin
float timeLeft = timeStep; float timeLeft = timeStep;
//m_log.Info(timeStep.ToString()); //m_log.Info(timeStep.ToString());
// step_time += timeStep; // step_time += timeSte
// //
// // If We're loaded down by something else, // // If We're loaded down by something else,
// // or debugging with the Visual Studio project on pause // // or debugging with the Visual Studio project on pause
@ -3008,8 +3013,14 @@ namespace OpenSim.Region.Physics.OdePlugin
m_global_contactcount = 0; m_global_contactcount = 0;
if (CollectStats)
quickStepTick = Util.EnvironmentTickCount();
d.WorldQuickStep(world, ODE_STEPSIZE); d.WorldQuickStep(world, ODE_STEPSIZE);
if (CollectStats)
m_stats[ODENativeStepFrameMsStatName] += Util.EnvironmentTickCountSubtract(quickStepTick);
d.JointGroupEmpty(contactgroup); d.JointGroupEmpty(contactgroup);
} }
catch (Exception e) catch (Exception e)
@ -3077,7 +3088,7 @@ namespace OpenSim.Region.Physics.OdePlugin
d.WorldExportDIF(world, fname, physics_logging_append_existing_logfile, prefix); d.WorldExportDIF(world, fname, physics_logging_append_existing_logfile, prefix);
} }
latertickcount = Util.EnvironmentTickCount() - tickCountFrameRun; latertickcount = Util.EnvironmentTickCountSubtract(tickCountFrameRun);
// OpenSimulator above does 10 fps. 10 fps = means that the main thread loop and physics // OpenSimulator above does 10 fps. 10 fps = means that the main thread loop and physics
// has a max of 100 ms to run theoretically. // has a max of 100 ms to run theoretically.
@ -3098,7 +3109,7 @@ namespace OpenSim.Region.Physics.OdePlugin
} }
if (CollectStats) if (CollectStats)
m_stats[ODETotalFrameMsStatName] += Util.EnvironmentTickCount() - startFrameTick; m_stats[ODETotalFrameMsStatName] += Util.EnvironmentTickCountSubtract(startFrameTick);
return fps; return fps;
} }
@ -4119,6 +4130,7 @@ namespace OpenSim.Region.Physics.OdePlugin
// m_stats[ODENativeCollisionFrameMsStatName] = 0; // m_stats[ODENativeCollisionFrameMsStatName] = 0;
m_stats[ODETotalFrameMsStatName] = 0; m_stats[ODETotalFrameMsStatName] = 0;
m_stats[ODENativeStepFrameMsStatName] = 0;
m_stats[ODENativeSpaceCollisionFrameMsStatName] = 0; m_stats[ODENativeSpaceCollisionFrameMsStatName] = 0;
m_stats[ODENativeGeomCollisionFrameMsStatName] = 0; m_stats[ODENativeGeomCollisionFrameMsStatName] = 0;
m_stats[ODEAvatarContactsStatsName] = 0; m_stats[ODEAvatarContactsStatsName] = 0;